26.Remove Duplicates from Sorted Array

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        j = 0
        for i in range(len(nums)):
            if i >j and nums[i] > nums[j] :
                j += 1
                nums[j] = nums[i]
        return j+1

Java 版:


  • 此题并不是要求返回一个长度,而是,需要你将数组原地替换;
  • 返回替换后,数组里面的不重复的个数;
  • 用 idx 表示前面记录的位置,遍历到后面的时候,如果不相等;
  • 交换 nums[idx] 与 nums[i] 的位置即可。

    class Solution {
        public int removeDuplicates(int[] nums) {
            if(nums.length == 0) return 0;
            int idx = 0;//idx前面的都是不重复的元素
            for(int i = 0; i < nums.length; i++){
                if(i > 0 && nums[i] == nums[i-1]) continue;//前后重复的元素,跳过
                nums[idx++] = nums[i];//非重复,将其写入到idx位置,再将idx+1
            }
            return idx;
        }
}
原文地址:https://www.cnblogs.com/luo-c/p/12857164.html