1. 程式人生 > >LeetCode 26. 刪除排序陣列中的重複項(C++)

LeetCode 26. 刪除排序陣列中的重複項(C++)

題目:

給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素只出現一次,返回移除後陣列的新長度。

不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 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; } };