class Solution {
public void moveZeroe 《一线大厂Java面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 s(int[] nums) {
if(nums == null){
return;
}
int j = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i] != 0){ // 不为零就覆盖之前指针项
nums[j] = nums[i];
j++;
}
}
for(int i = j;i < nums.length; i++){ // 不全剩下位数
nums[i] = 0;
}
}
}
方法二:交换i 、 j 指针初始都指向索引 0
i 指针负责扫描整个数组,遇到了非0项,就与 j 指向的项交换,不管它是否为 0
因此非 0 项被不断交换到数组的前部, 0 都跑到数组的最右
class Solution {
public void moveZeroes(int[] nums) {
if(nums == null){
return;
}
int j = 0;
for(int i = 0; i < nums.length; i++){
if(nums[i]!=0){
int temp = nums[i];
nums[i] = nums[j];
nums[j] = temp;
j++;
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)