题目分析:给出一串数字,找出这串数字所有不同数字的个数n,并且得到新的大小为n的集合包含这n个不同的数,要求空间复杂度为O(1)。
代码分析:
c++
int removeDuplicates(vector<int>& nums) {
if(nums.empty()) return 0;
auto t1 = nums.begin(); //设置2个指针
auto t2 = nums.begin() + 1;
for( ; t2 != nums.end() ; t2 ++){
if(*t1 != *t2){
t1 += 1;
*t1 = *t2; 指针t1向后移动一位且该指针指向的值替换为为t2指向的值
}
}
return t1 - nums.begin() + 1;
}
python:
def removeDuplicates(nums: List[int]):
if len(nums) == 0:
return 0
count = 0 #计数不同值个数
for x in range(1, len(nums)):
if nums[count] != nums[x]:
count += 1
nums[count] = nums[x]
return count + 1 #count初始为0,所以还要再加1