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

ps:发现刷题比看论文有意思多了TAT尤其是课题毫无进展的时候,还算写代码有意思23333

思路: 这道题本身不难,唯一要考虑的在于不占用额外空间,因此设两个“指针”的方式,一个指向旧数组遍历的位置,一个指向新数组应该增加的位置。当每次遍历到新的数时,就在新数组那覆盖原来的数字,而旧数组遍历完即结束。关于利用两个指针指向的方式,已经做过好几道题了,两数求和,三数求和,链表也有快慢链表。

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        if(nums.empty()) return {};
        int newposition=1; //新的数组插入的位置
        int cur=nums[0]; //第一个数
        for(int i=1;i<nums.size();i++)
        {
            if(nums[i]!=cur)
            {
                nums[newposition++]=nums[i];
                cur=nums[i];
            }
            
        }
        return newposition;
    }
};

参考http://www.cnblogs.com/grandyang/p/4329128.html。代码更简洁。不过思路整体是一样的。

猜你喜欢

转载自blog.csdn.net/annabelle1130/article/details/88620962