您的位置:首页 > 编程语言 > C#

leetcode 283 Move Zeroes --个人的新思路

2016-06-20 15:11 267 查看
leetcode 283 move zeroes.
其实想法很简单,这里提供一个新思路。例如 [0,1,0,3,12]  遇到第一个0时,记录当前的count值为1,则,再遇到第二个0之前,数都往前移动count,也就是1位,变成[1,1,0,3,12] .继续循环,count=2,后面的数移动count,即2位,变成[1,3,12,3,12]. 因为count记录了0的个数,所以,从n-count位开始,到最后,都赋值为0.
如果一开始不是0,就说明前面的是默认有序的,i++直到第一个0出现
public class Solution
{
public void MoveZeroes(int[] nums)
{
int n = nums.Length;
int count = 0;  //记下来有几个0
int i = 0;
if(n>1){
while (i < n)
{
if (nums[i] == 0)
{
count++;    //0的个数增加
i++;         //标记到0的下一位,准备往前移
while (  i < n && nums[i] != 0)  //往前移动count位
{
nums[i - count] = nums[i];
i++;
}
}
else
i++;
}
for(int j=n-count;j<n;j++)
nums[j]=0;
}
}
}



                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  leetcode 283 c#