【Java】【JS】LeetCode - 双指针 - #283 移动

【Java】【JS】LeetCode - 双指针 - #283 移动,第1张

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++;

}
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/905967.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-15
下一篇 2022-05-15

发表评论

登录后才能评论

评论列表(0条)

保存