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
代码:
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
void moveZeroes(int* nums, int numsSize) {
if (nums == NULL || numsSize <= 0)
return;
int last = 0, cur = 0;
while (cur < numsSize) {
if (nums[cur] != 0) {
swap(&nums[last], &nums[cur]);
last++;
}
cur++;
}
}
原题地址:
https://leetcode.com/problems/move-zeroes/