[LeetCode283]移動零
- 第一次嘗試
class Solution {
public void moveZeroes(int[] nums) {
int i,j;
int s=nums.length;
int count = 0;
for(i=0;i<s-1;i++)
if(nums[i]==0)
{ count++;
for(j=i;j<s-1;j++)
{
nums[j]=nums[j+1];
}
}
for(i=0;i<count;i++)
{
nums[s-1-i]=0;
}
}
}
失敗案例:
輸入【0蚣常,0若专,1】
輸出【0,1碍沐,0】
預期【1,0搔涝,0】
由于沒有考慮到連續(xù)0的情況呢灶,導致沒有考慮到移動一次后可能出現nums[0]==0的情況
- 第二次嘗試
public class Solution {
public void moveZeroes(int[] nums) {
int i,j;
int s=nums.length;
int count = 0;
for(i=0;i<s;i++)
{
if(nums[i]!=0)
{
nums[count] = nums[i];
count ++;
}
}
for(i=count;i<s;i++)
{
nums[i]=0;
}
}
}
改用count來記錄非0的數,然后把非零的數都從位置0開始連續(xù)排列见芹,最后把空缺的位置都置0