leetcode--26. 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 nums = [1,1,2],

Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively. It doesn’t matter what you leave beyond the new length.

思路

这道题比较简单。我们可以将不重复的序列存到数列前面,因为不重复序列的长度一定小于等于总序列,所以不用担心覆盖的问题。然后用两个指针,第一个指针指向当前数组遍历到的位置,第二个指针指向不重复序列下一个存放的位置。并且记录上一次遍历过的数,用来比较当前遍历到的数是否与之相等。如果不相等,则说明不与之前遍历过的数重复,因为数组是有序的。然后将它放到不重复序列那里。代码如下:

 public int removeDuplicates(int[] nums) {
        if(nums.length == 0) return 0;
        int lastread = nums[0];
        int end = 1;
        for(int i=1;i<nums.length;i++){
            if(lastread != nums[i]){
                lastread = nums[i];
                nums[end] = nums[i];
                end++;
            }
        }
        return end;
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值