实际上tmp统计的零的数目根本没有用上--使用的还属双指针
#include <stdio.h>
extern void moveZeroes(int *nums, int numsSize);
void main()
{
int a[] = {1, 6, 0, 2, 0, 3, 0, 6, 6};
moveZeroes(a, 9);
}
void moveZeroes(int *nums, int numsSize)
{
int i, j;
int tmp = 0;
for (i = 0; i < numsSize; i++)
{
if (nums[i] == 0)
{
tmp++;
}
}
int k = 0;
i = 0;
for (j = 0; j < numsSize; j++)
{
if (nums[j] != 0)
{
nums[i++] = nums[j];
}
}
for (k = i; k < numsSize; k++)
{
nums[k] = 0;
}
for (int m = 0; m < numsSize; m++)
{
printf("%d", nums[m]);
}
}
删除了多余的tmp的统计零的数量的的变量
#include <stdio.h>
extern void moveZeroes(int *nums, int numsSize);
void main()
{
int a[] = {1, 6, 0, 2, 0, 3, 0, 6, 6};
moveZeroes(a, 9);
}
void moveZeroes(int *nums, int numsSize)
{
int i, j;
int k = 0;
i = 0;
for (j = 0; j < numsSize; j++)
{
if (nums[j] != 0)
{
nums[i++] = nums[j];
}
}
for (k = i; k < numsSize; k++)
{
nums[k] = 0;
}
for (int m = 0; m < numsSize; m++)
{
printf("%d", nums[m]);
}
}