對於程式設計師來說,年齡歧視一直是很頭疼的問題。最近人力資源社會保障部和中央網信辦,聯合印發了一份【關於進一步加強人力資源市場規範管理的通知】,其中明確規定了
不能進行年齡歧視
。
規定的出發點是好的,關鍵是要去執行,並且要強制執行,對於不遵守規定的企業給與懲罰,如果所有企業都不遵守,這種檔也就變成一紙空文了。
--------------下面是今天的演算法題--------------
來看下今天的演算法題,這題是LeetCode的第26題:刪除有序陣列中的重復項。
問題描述
來源:LeetCode第26題
難度:簡單
給你一個有序陣列nums ,請你原地刪除重復出現的元素,使每個元素只出現一次 ,返回刪除後陣列的新長度。
不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用O(1)額外空間的條件下完成。
範例1:
輸入 :nums = [1,1,2]
輸出 :2, nums = [1,2,_]
解釋 :函式應該返回新的長度 2 ,並且原陣列 nums 的前兩個元素被修改為 1, 2 。不需要考慮陣列中超出新長度後面的元素。
範例2:
輸入
:nums = [0,0,1,1,1,2,2,3,3,4]
輸出 :5, nums = [0,1,2,3,4]
解釋 :函式應該返回新的長度 5 , 並且原陣列 nums 的前五個元素被修改為 0, 1, 2, 3, 4 。不需要考慮陣列中超出新長度後面的元素。
1 <= nums.length <= 3 * 10^4
-10^4 <= nums[i] <= 10^4
nums 已按非嚴格遞增排列
問題分析
這題是讓刪除有序陣列中的重復元素,因為陣列是有序的,所以如果有重復的元素,它們肯定都是挨著的,我們只需要前後兩兩比較即可判斷是否是重復的元素。
JAVA:
publicintremoveDuplicates(int[] nums){
int index = 0;
for (int num : nums)// 遍歷所有元素
if (index == 0 || num != nums[index - 1])
nums[index++] = num;
return index;
}
C++:
public:
intremoveDuplicates(vector<int> &nums){
int index = 0;
for (int &num: nums)// 遍歷所有元素
if (index == 0 || num != nums[index - 1])
nums[index++] = num;
return index;
}
Python:
defremoveDuplicates(self, nums: List[int]) -> int:
index = 0
for num in nums: # 遍歷所有元素
if index == 0or num != nums[index - 1]:
nums[index] = num
index += 1
return index