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

介绍
给定一个有序数组,删除重复内容,使每个元素只出现一次,并返回新的长度。
不要为其他数组分配额外的空间,您必须通过在 O(1)额外的内存中就地修改输入数组来实现这一点。

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

思路

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

 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;  
    }  
阅读更多
个人分类: LeetCode题解
想对作者说点什么? 我来说一句

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

关闭
关闭
关闭