LeetCode_Remove Duplicates from Sorted Array

88 篇文章 0 订阅
45 篇文章 0 订阅

一.题目

Remove Duplicates from Sorted Array

   Total Accepted: 44643  Total Submissions: 141208 My Submissions

Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length.

Do not allocate extra space for another array, you must do this in place with constant memory.

For example,
Given input array A = [1,1,2],

Your function should return length = 2, and A is now [1,2].

Show Tags
Have you met this question in a real interview?  
Yes
 
No

Discuss


二.解题技巧

    由于数组里面的元素都是已经排好序的,因此,从第二个元素开始,只要判断这个元素是否和前面的元素相同就可以知道这个元素是否是重复的。题目要求返回不重复的元素的个数,同时,要求返回的数组的元素都是不重复的,还要是in-place的,也就是不能重新定义一个数组来保存不重复的元素,只能在原数组操作。这个问题其实也不难,我们可以设置一个变量Count来保存不重复的元素的个数,然后遍历整个数组A,如果该元素A[i]!=A[i-1]的话,将第i个元素复制到A的Count位置,也即是A[Count]=A[i],然后将Count加1.
    主要的注意点是,如果数组的元素个数小于2的话,就可以提前结束函数了。


三.实现代码

<span style="font-size:14px;">int removeDuplicates(int A[], int n)
{
    if (n < 2)
    {
        return n;
    }

    int Count = 1;
    for (int Index = 1; Index < n; Index++)
    {
        if (A[Index - 1] != A[Index])
        {
            A[Count++] = A[Index];
        }
    }

    return Count;
}</span>




四.体会

   这道题还是挺容易的,因为数组本身是排好序的,只要判断元素与前一个元素是否相同就知道该元素是不是重复的,同时,记录已经遍历过的元素中不重复的元素的个数的变量也同时记录了下一个不重复的元素在数组中的存放位置。根据上面的思路,就可以很快解决这道题了。


版权所有,欢迎转载,转载请注明出处,谢谢

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值