删除重复数字
我的想法:在后面作比较
int removeDuplicates(int* nums, int numsSize){
int fast,slow;"快慢指针"
if(!numsSize) return 0;"判断空数组"
for(fast=0,slow=0;fast<numsSize-1;fast++){"快指针一往无前"
if(nums[fast]!=nums[fast+1]){"判断是否是新的数字"
slow++;
nums[slow]=nums[fast+1];"slow每次只移动一格(每个数字只有一个嘛"
}
}
return slow+1;
}
其他想法:每次都把新来的第一个元素放进去,slow和fast前后作比较
移动零
有了前几题的铺垫和双指针的背景,简单了很多。
void moveZeroes(int* nums, int numsSize){
int fast,slow;
for(fast=0,slow=0;fast<numsSize;fast++)
if(nums[fast]!=0)
nums[slow++]=nums[fast];
while(slow<numsSize)
nums[slow++]=0;
}