LeetCode 026 Remove Duplicates from Sorted Array

题目


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].


有排序的数组,删除重复的元素,让每个元素都只出现一次。

需要原地处理。

思路


1 考虑两个指针。第一个指针用来遍历,第二个指针用来表示处理好的元素。

2 每次遍历碰到前面一样的,继续;碰到不一样的,存储到第二个指针的位子,然后第二个指针再往后移动一格。

3 这个方法能够使用,关键在于排序过了。这样就不会出现相隔一段距离一样的元素。

4 这类问题有很多变形,不要记住固定套路,而是根据实际情况,产生相应地逻辑代码。写出来后一定要检查各种情况。


代码


public class Solution {
    public int removeDuplicates(int[] A) {
        if(A.length==0){
            return 0;
        }
        int newindex = 1;
        int oldindex =1;
        int element = A[0];
        
        while(oldindex<A.length){
            if(A[oldindex]!=element){
                A[newindex]=A[oldindex];
                element = A[oldindex];
                newindex++;
            }
            oldindex++;
        }
        return newindex;
    }
}




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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值