26. 删除排序数组中的重复项

 

 用两个指针就行,一个指针i初始时指向头元素,另一个j指向下标为1的元素(所以说,当长度为1时单独判断,长度为1就返回1)

之后,如果i下标的元素等于j下标的元素,j++,假如到了i和j代表的元素不等时,说明i,j中间这些都是重复元素,都是等于nums[i]的元素,此时,nums[i+1]=nums[j],i++。i的值就是值不重复的元素的个数

class Solution {
    public int removeDuplicates(int[] nums) {
        if(nums.length==1)
            return nums.length;
        int length=nums.length;
        int i=0;
        int j=1;
        while(j<length)
        {
            
            if(nums[i]==nums[j])
            {
                //i++;
                //j=i+1;   这样的话,如果刚好遇到前一个数与后一个数相同,就是死循环,所以
                //么一次,j自加1
                j++;
            }
            else
            {
                nums[i+1]=nums[j];
                i=i+1;
                j+=1;

            }
        }
        return i+1;
    }
}

  

posted @ 2020-05-04 13:55  弓呆的胖次  阅读(137)  评论(0编辑  收藏  举报