LeetCode算法学习之移动0

完整代码实现:

java 复制代码
class Solution {
    public void moveZeroes(int[] nums) {
        //双指针法解决这个问题
        int slow = 0;
        for(int fast = 0;fast<nums.length;fast++){
            if(nums[fast] != 0){
                int temp = nums[slow];
                nums[slow] = nums[fast];
                nums[fast] = temp;
                slow++;
            }
        }
    }
}

关键步骤详解

  1. 初始化指针:

slow = 0,fast = 0

  1. 遍历数组(fast 移动):

如果 nums[fast] != 0:

交换 nums[slow] 和 nums[fast](将非零元素移到左侧)

slow++(慢指针右移,标记下一个非零位置)

如果 nums[fast] == 0:

跳过,fast 继续右移

  1. 结果:

所有非零元素被移动到 slow 左侧,剩余位置自动补零

相关推荐
lixinnnn.3 小时前
算法总结篇(枚举-分治)
算法·1024程序员节
百锦再3 小时前
Go与Python在AI大模型开发中的深度对比分析
java·开发语言·人工智能·python·学习·golang·maven
on_pluto_3 小时前
【基础复习3】决策树
算法·决策树·机器学习
熬了夜的程序员3 小时前
【LeetCode】90. 子集 II
数据结构·算法·leetcode·链表·职场和发展·排序算法
moisture3 小时前
集合通信原语
后端·算法
Espresso Macchiato3 小时前
Leetcode 3729. Count Distinct Subarrays Divisible by K in Sorted Array
leetcode·leetcode hard·容斥原理·leetcode 3729·leetcode周赛473·前序和数组
熬了夜的程序员3 小时前
【LeetCode】91. 解码方法
算法·leetcode·链表·职场和发展·排序算法
大数据张老师3 小时前
数据结构——内部排序算法的选择和应用
数据结构·算法·排序算法
JohnYan3 小时前
微软验证器-验证ID功能初体验
后端·算法·安全