力扣移动零

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

复制代码
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

复制代码
输入: nums = [0]
输出: [0]

题解:

参考快速排序,零是中间点,等于零点放在右边,不能与零的放在左边,用两个指针,i和j,只要 nums[i]!=0,我们就交换 nums[i]nums[j]。j用来指非零,i找0;

java 复制代码
class solution(){
    public void MoveZeroes(int[] nums){
        if(nums==null){
            return;
        }
        int j=0;
        for(int i=0;i<nums.length;i++){
                 //当前元素!=0,就把其交换到左边,等于0的交换到右边
                if(nums[i]!=0){
                    int tmp = nums[i];
                    nums[i] = nums[j];
                    nums[j++] = temp;
                }
           }
    }
}
相关推荐
维克兜率天1 分钟前
【维克】模块3总结:从一行空数据,到一个能跑的模型
python·深度学习·算法
飞Link6 分钟前
定积分理论与 Python 仿真完全指南
python·算法
顶点多余16 分钟前
9.15 面试问题总结(一面挂)
linux·面试·职场和发展
闲研随记33 分钟前
RL算法学习:ArgMaxRL
算法·llm·强化学习·rl
飞Link36 分钟前
零基础:离散数据积分与 Python 实现保姆级教程
python·算法
圣保罗的大教堂38 分钟前
leetcode 836. 矩形重叠 简单
leetcode
淡海水1 小时前
11-03-Unity-List-T-和Dictionary-TKey-TValue-的性能调优实战
算法·unity·c#·list·dictionary
de之梦-御风1 小时前
【未来】.NET 开发在「劳动价值重估」下的定位与走向
职场和发展·.net
土司大王1 小时前
LeetCode hot100——394.字符串解码:Java 双栈模拟
java·算法·leetcode