Leetcode 26 删除有序数组中的相同元素

题目要求:

给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。

不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。

分析:有序数组中相同元素肯定在连续空间上,可以将第一个元素看作非重复的有序表,之后依次判断后面的元素是否与前面的非重复有序表的最后一个元素相同,如果相同则继续向后判断,如果不同则插入到非重复有序表的最后。

c++:

class Solution {
public:
    int removeDuplicates(vector<int>& nums) {
        int i,j;
        if(nums.size()==0)
            return 0;
        else{
        for(i=0,j=1;j<nums.size();j++)
        {
            if(nums[i]!=nums[j])
               nums[++i]=nums[j];   
        }
        }
    return i+1;
    }
};


全部评论

相关推荐

白火同学:大二有这水平很牛了,可以适当对关键信息加粗一点,比如关键技术、性能指标之类的。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务