天天看點

LeetCode解題記錄(26)——删除排序數組中的重複項題目說明解題方案

LeetCode解題記錄——删除排序數組中的重複項

  • 題目說明
    • 測試樣例
    • 題意了解
  • 解題方案

題目說明

給定一個排序數組,你需要在原地删除重複出現的元素,使得每個元素隻出現一次,傳回移除後數組的新長度。

不要使用額外的數組空間,你必須在原地修改輸入數組并在使用 O(1) 額外空間的條件下完成。

測試樣例

輸入:[1,1,2]

輸出:2

且要将數組修改成[1,2]。

題意了解

兩個要求,要在找到非重複元素數的基礎上将所有非重複元素按順序排到數組前部。

解題方案

因為數組為升序,那麼重複元素一定相鄰,使用兩個指針,一個指向目前元素,一個指向目前第一個非重複元素。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.size() == 0)
            return 0;
        int ind = 0;//指使非重複元素
        for(int i = 1;i<nums.size();i++){
            if(nums[i]!=nums[ind])//如果出現不重複元素
                nums[++ind] = nums[i];//指派
        }
        return ind+1;
    }
};
           
LeetCode解題記錄(26)——删除排序數組中的重複項題目說明解題方案

所有代碼都可以在我的github上找到:LeetCode