當前位置: 妍妍網 > 碼農

招聘不得年齡歧視!國家出手整治。。。

2024-09-04碼農

對於程式設計師來說,年齡歧視一直是很頭疼的問題。最近人力資源社會保障部和中央網信辦,聯合印發了一份【關於進一步加強人力資源市場規範管理的通知】,其中明確規定了 不能進行年齡歧視

規定的出發點是好的,關鍵是要去執行,並且要強制執行,對於不遵守規定的企業給與懲罰,如果所有企業都不遵守,這種檔也就變成一紙空文了。


--------------下面是今天的演算法題--------------

來看下今天的演算法題,這題是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