双指针:
class Solution: def removeDuplicates(self, nums) -> int: if len(nums)<2: return len(nums) i,j=0,1 while j<len(nums): if nums[i]==nums[j]: nums.pop(j) else: i,j=i+1,j+1 return len(nums)
执行用时116ms。
执行用时48ms的别人的做法:
class Solution: def removeDuplicates(self, nums: List[int]) -> int: if not nums:return 0 k = 1 for i in range(1,len(nums)): if nums[i] != nums[i-1]: nums[k]=nums[i] k+=1 return k
多妙啊,但是我就是想不到。。。。
——2019.10.8
public int removeDuplicates(int[] nums) { //双指针 int len = nums.length; if(len == 0){ return 0; }else if(len == 1){ return 1; } int i = 1,j = 1; while(i<len){ if(nums[i]<= nums[j-1]){ i++; }else if(nums[i]>nums[j-1]) { nums[j] = nums[i]; i++; j++; } } return j; }
——2020.7.8