leetcode 283. Move Zeroes
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. WA:void moveZeroes(int* nums, int numsSize) { for(int i=numsSize-1;i>=0;i--) { if(nums[i]==0) { continue; } int j; for(j=i-1;j>=0;j--) { if(nums[j]==0) { int k=nums[i]; nums[i]=nums[j]; nums[j]=k; break; } } if(j==-1) { return nums; } } return nums; }
Input:[0,1,0,3,12]
Output: [3,1,12,0,0] Expected: [1,3,12,0,0] AC: void moveZeroes(int* nums, int numsSize) { for(int i=0;i<numsSize;i++) { if(nums[i]!=0) { continue; } int j; for(j=i+1;j<numsSize;j++) { if(nums[j]!=0) { int k=nums[i]; nums[i]=nums[j]; nums[j]=k; break; } } if(j==numsSize) { return nums; } } return nums; } tips :刚开始很作死的想要倒着循环,然后错了,后来老老实实从0~numsSize,就AC了