LeetCode283. Move ZeroesC语言
Givenanarraynums,writeafunctiontomoveall0'stotheendofitwhilemaintainingtherelativeorderofthenon-zeroelements.Forexample,givennums=[0,1,0,3,12],aftercallingyourfunction,numsshouldbe[1,3,12,0,0].Note:Youmustdothisin-placewithoutmakingacopyofthearray.Minimizethetotalnumberofoperations
题意:给一个数组,把其中的0放到最后。注意不要创建新的数组和最小化所有操作的数量
voidmoveZeroes(int*nums,intnumsSize){//选择排序变一下。。。。。n*2//inti,j;//for(i=0;i<numsSize;i++)//for(j=i+1;j<numsSize;j++){//if(nums[i]==0){//inttemp=nums[i];//nums[i]=nums[j];//nums[j]=temp;//}//}//网上的做法1.简单粗暴容易理解。只不过是分了两步而已。。。inti;intindex=0;for(i=0;i<numsSize;i++){if(nums[i]!=0){nums[index]=nums[i];index++;}}//printf("%d",index);for(i=index;i<numsSize;i++){nums[i]=0;}///还有做法2.不太容易理解,}
PS:维持俩指针。。。。。
一开始想到的事排序。。。。。。把0排到最后,虽然过了,但是复杂度n*2.操作数量也挺多的。
看了网上的做法1.容易理解简单粗暴。
还有一个做法理解起来有点障碍。。。。。。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。