小菜汪的小窝

记录自己想记录的

Leetcode-26-从排序数组中删除重复项

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 by modifying the input array in-place with O(1) extra memory.


给定一个有序数组,删除重复内容使每个元素只出现一次,并返回新的长度。

不要为其他数组分配额外的空间,您必须通过 O(1)额外的内存中就地修改输入数组来实现这一点

例:

给定nums = [1,1,2],

你的函数应该返回length = 2,前两个nums元素分别是1和2。
无论你离开新的长度,都没有关系。

这道题的思路就是采用两个标记点 number 和 i ,number记录不重复元素的位置,i从number的下一个开始遍历数组,如果i位置的数字等于number位置的数字,说明该数字重复出现,不予处理;如果i位置的数字不等于number位置的数字,说明该数字没有重复,需要放到l的下一位置,并使number加1。

AC代码如下

public class leetcode26 {
    public static void main(String[] args) {
        leetcode26 lt = new leetcode26();
        int []num = {0,1,1,2,2,3,3,4};
        System.out.println(lt.removeDuplicates(num));
    }

    // 扔进去AC了他
    public int removeDuplicates(int[] nums) {
        if (nums.length == 0)
            return 0;
        //判断无输入
        int number = 0;//标记计数
        for (int i=0; i < nums.length ; i++) {
            if ( nums[i] != nums[number] ) {
                number++;
                nums[number] = nums[i];
            }
        }
        number+=1; //标记+1即为数字个数
        return number;
    }

}



阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37591251/article/details/78678682
文章标签: java 算法
个人分类: LeetCode刷题总结
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭