80.删除排序数组中的重复项II

   日期:2020-05-11     浏览:157    评论:0    
核心提示:leetcode80 删除排序数组中的重复项ii数据结构与算法

leetcode80 删除排序数组中的重复项II

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

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

给定 nums = [1,1,1,2,2,3],
函数应返回新长度 length = 5, 并且原数组的前五个元素被修改为 1, 1, 2, 2, 3 。
你不需要考虑数组中超出新长度后面的元素。




int removeDuplicates(int* nums, int numsSize) {
    int slow = 0, fast = 0;
    while (fast < numsSize) {
        int cur = nums[fast];
        nums[slow++] = nums[fast++];
        if (fast == numsSize) break;
        if (cur == nums[fast]) nums[slow++] = cur;
        while (fast < numsSize && nums[fast] == cur) fast++;
    }
    return slow;
}



int removeDuplicates(int* nums, int numsSize,int k) {
    int slow = 0, fast = 0;
    while (fast < numsSize) {
        int cur = nums[fast], temp = 0;
        while (temp < k && fast < numsSize && nums[fast] == cur) {
            nums[slow++] = nums[fast++];
            temp++;
        }
        while (fast < numsSize && nums[fast] == cur) fast++;
    }
    return slow;
}

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
更多>相关资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服