// nums 是以“引用”方式传递的。也就是说,不对实参做任何拷贝 int len = removeDuplicates(nums); // 在函数里修改输入数组对于调用者是可见的。 // 根据你的函数返回的长度, 它会打印出数组中该长度范围内的所有元素。 for (int i = 0; i < len; i++) { print(nums[i]); }
核心思想:list是有序的,将不同值逐个放在数组中,后面不做修改,创建一个ff记录当前不重复值的最大值和k记录数组当前被可修改的最大index, 时间复杂度O(n),空间复杂度O(1)
class Solution(object): def removeDuplicates(self, nums): """ :type nums: List[int] :rtype: int """ if len(nums)==0 or nums==None: return 0 ff=nums[0] k=1 if len(nums)>1: i=1 while i<len(nums): if nums[i]!=ff: ff=nums[i] nums[k]=ff k+=1 i+=1 return k