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; } }