2021年11月9日 数组字符串初次收尾&&树开卷

删除重复数字

 我的想法:在后面作比较 

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

猜你喜欢

转载自blog.csdn.net/LEewhITe2003/article/details/121235006