当前位置:首页 » 《资源分享》 » 正文

【力扣LeetCode】删除有序数组中的重复项_Layman光~的博客

21 人参与  2021年09月29日 17:03  分类 : 《资源分享》  评论

点击全文阅读


题目:

给你一个有序数组 nums ,请你原地删除重复出现的元素,使每个元素只出现一次 ,返回删除后数组的新长度。

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

示例:
输入:nums = [1,1,2]
输出:2, nums = [1,2]
解释:函数应该返回新的长度 2 ,并且原数组 nums 的前两个元素被修改为 1, 2 。不需要考虑数组中超出新长度后面的元素。

题目分析:

当面对这个题的时候,我们应该怎样去处理呢?
接下来告诉大家一个方法:
在这里插入图片描述
我们可以用两个指针来解决这个问题,将src和dst的位置进行比较:
1、相等的话,src++;
2、不相等的话,先dst++,再将src位置的值赋给dst,再将src++;
3、重复这个过程,直到src走到尾。
注意:这里还要考虑数组为空的情况下,直接返回0。

代码实现:

int removeDuplicates(int* nums, int numsSize){
	//数组为空的情况下
    if(numsSize == 0)
    {
        return 0 ;
    }
    int src = 0;
    int dst = 0;
    while(src<numsSize)
    {
        if(nums[dst] == nums[src])
        {
            src++;
        }
        else
        {
            dst++;
            nums[dst] = nums[src];
            src++;
        }
    }
    return dst + 1;
}

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/29045.html

数组  元素  长度  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1