LeetCode 26. 刪除排序陣列中的重複項(C++)
阿新 • • 發佈:2019-02-19
題目:
給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。
不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。
思路
由於是有序陣列,所以可以一次遍歷陣列,通過int變數len儲存已經遍歷到的非重複元素個數,通過nums[len-1]訪問到最後一個非重複元素,並判斷當前元素是否為重複元素。
class Solution {
public:
int removeDuplicates(vector<int>& nums) {
if(nums.size() == 0 )
return 0;
int len; //當前陣列中已經篩選出的非重複元素個數
len = 1; //陣列第一個元素直接計數
for(int i = 1;i < nums.size();i++){
if(nums[i] != nums[len - 1]){ //遍歷到的非重複值
nums[len] = nums[i];
++len;
}
}
return len;
}
};