以前的csdn号找不到了,不过以前也没写过博客。。。。研究生比较自主,每天刷一点LeetCode吧!那就记录一下。
PS:之前没搞过算法,算导什么的也从来没刷过,渣渣一个!!算法大神多指教。。。
AC的第一道:
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 moveZeroes(int* nums, int numsSize) {
int i , j ;
for(i = 0 , j = 0 ; i < numsSize ; i++)
{
if(nums[i] != 0)
{
if(j)
{
nums[i - j] = nums[i];
nums[i] = 0;
}
}
else
j++;
}
}
int i , j ;
for(i = 0 , j = 0 ; i < numsSize ; i++)
{
if(nums[i] != 0)
{
if(j)
{
nums[i - j] = nums[i];
nums[i] = 0;
}
}
else
j++;
}
}
求各路大神轻喷指教。。