//朴素
class Solution0 {
public void moveZeroes(int[] n) {
int zeros=0;//0的个数
int[] n2 = new int[n.length];//创建一个等大的数组存放结果
int j=0;//n2的指针
for(int i=0;i<n.length;i++){//遍历n1
if(n[i]!=0) n2[j++]=n[i];//挑出非零数放入n2
else zeros++;//计算0的个数
}
while(zeros-->0) n2[j++]=0;//在n2后面补0
for(int i=0;i<n.length;i++)//遍历n1
n[i]=n2[i];//将n2的值放入n1
}
}
//非零元素向前覆盖,双指针
class Solution {
public void moveZeroes(int[] n) {
int j=0;//指向非零元素的指针
for(int i=0;i<n.length;i++){//遍历n
if(n[i]!=0)n[j++]=n[i];//非零元素向前覆盖
}
for(;j<n.length;j++){//迭代j指针及其后面
n[j]=0;//赋值为0
}
}
}
LeetCode JAVA 283. 移动零
最新推荐文章于 2024-05-20 23:52:50 发布