题目

leetcode 26 : 删除排序数组中的重复项

算法思想 :因为不能开辟新的空间,所以我们需要直接在原数组进行修改。我们定义三个指针i,j,k。i表示一段相同数的起始位置,j则是找到第一个与nums[i]不相等的位置,找到以后nums[k] = nums[i],表示覆盖原来多余的元素,直接替换为不同的元素。

 

 int removeDuplicates(vector<int>& nums) {
        int i = 0,j = 0,k = 0;
        if(nums.size() == 0)
            return 0;
        while(i < nums.size())
        {
            for(j = i+1;j < nums.size();j++)
            {
                if(nums[i] != nums[j] )
                {
                    nums[k] = nums[i];
                    k++;
                    i = j;
                }
            }
            if(j == nums.size())
            {
                nums[k] = nums[i];
                k++;
                break;
            }
        }
        return k;
    }

相关文章: