给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
示例:
输入: [0,1,0,3,12]
输出: [1,3,12,0,0]
等等,我来
void moveZeroes(int[] nums) {
// 0 边界处理
if (nums == null || nums.length ==0)
{
return;
}
int i = 0 ; //统计0的个数
for (int j = 0; j < nums.length; j++)
{
if (nums[j] == 0)
i++; // 统计0的个数
else if (i != 0)
{
nums[j-i] = nums[j];
nums[j] = 0;
}
}
}
#include <stdio.h>
void sort_zero(int input[], int size);
int main() {
int input[] = {0, 1, 3, 0, 12};
sort_zero(input, 5);
for (int i=0; i<5; i++) {
printf("%d ", input[i]);
}
printf("\n");
}
void sort_zero(int input[], int size) {
if (size <= 1) {
return;
}
// 类似冒泡排序的逻辑
for (int i=size; i>0; i--) {
for (int j=0; j<i-1; j++) {
if (input[j] == 0) {
// 交换
int tmp = input[j];
input[j] = input[j+1];
input[j+1] = tmp;
}
}
}
}