283. Move Zeroes

来源:互联网 发布:曾是编程员的音乐人 编辑:程序博客网 时间:2024/06/03 07:07
/*Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements.For example, given nums = [0, 1, 0, 3, 12], after calling your function, nums should be [1, 3, 12, 0, 0].Note:You must do this in-place without making a copy of the array.Minimize the total number of operations.两指针问题*/#include <stdio.h>void moveZeroes(int* nums, int numsSize) {    int *start=nums,*fast=nums;    while(fast < nums+numsSize)    {        while(fast < nums+numsSize && *fast == 0) fast++;        if(fast < nums+numsSize)            *start++=*fast++;    }    while(start < nums+numsSize)        *start++=0;}int main(){    int nums[]={0,0};    int numsSize=sizeof(nums)/sizeof(int);    moveZeroes(nums,numsSize);    int i=0;    for(;i<numsSize;i++)        printf("%d\n",nums[i]);    return 0;}
原创粉丝点击