init commit
This commit is contained in:
58
archive/algorithm/leetcode/283.c
Normal file
58
archive/algorithm/leetcode/283.c
Normal file
@ -0,0 +1,58 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
|
||||
/**
|
||||
* 移动零
|
||||
* https://leetcode-cn.com/problems/move-zeroes/description/
|
||||
*/
|
||||
void moveZeroes(int *nums, int numsSize)
|
||||
{
|
||||
int zeroNumber = 0;
|
||||
for (int i = numsSize - 1; i >= 0; i--)
|
||||
{
|
||||
if (nums[i] == 0) //等于0时,往后移动
|
||||
{
|
||||
for (int n = i; n < numsSize - zeroNumber - 1; n++) //后面的数字直接的往前赋值
|
||||
{
|
||||
nums[n] = nums[n + 1];
|
||||
}
|
||||
nums[numsSize - zeroNumber - 1] = 0;
|
||||
zeroNumber++;
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
void moveZeroes(int* nums, int numsSize) {
|
||||
int zeroNum = 0;
|
||||
int i;
|
||||
for (i = 0; i < numsSize; i++) {
|
||||
if (nums[i] == 0) {
|
||||
zeroNum++;
|
||||
} else {
|
||||
nums[i-zeroNum] = nums[i];
|
||||
}
|
||||
}
|
||||
for (i = numsSize-zeroNum; i < numsSize; i++) {
|
||||
nums[i] = 0;
|
||||
}
|
||||
}
|
||||
*/
|
||||
void print_r(int *a, int len)
|
||||
{
|
||||
for (int i = 0; i < len; i++)
|
||||
{
|
||||
printf("%d\t", a[i]);
|
||||
}
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
int tmp[] = {0, 1, 0, 3, 12};
|
||||
moveZeroes(tmp, sizeof(tmp) / sizeof(int));
|
||||
print_r(tmp, sizeof(tmp) / sizeof(int));
|
||||
getchar();
|
||||
return 0;
|
||||
}
|
Reference in New Issue
Block a user