力扣移动零

给定一个数组 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;
                }
           }
    }
}
相关推荐
今天背单词了吗98028 分钟前
算法学习笔记:11.冒泡排序——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·学习·算法·排序算法·冒泡排序
开开心心就好2 小时前
高效报价软件,简化商铺定价流程
服务器·数据库·安全·面试·职场和发展·电脑·symfony
倔强的小石头_4 小时前
【C语言指南】函数指针深度解析
java·c语言·算法
Yasin Chen4 小时前
C# Dictionary源码分析
算法·unity·哈希算法
_Coin_-5 小时前
算法训练营DAY27 第八章 贪心算法 part01
算法·贪心算法
董董灿是个攻城狮9 小时前
5分钟搞懂什么是窗口注意力?
算法
Dann Hiroaki9 小时前
笔记分享: 哈尔滨工业大学CS31002编译原理——02. 语法分析
笔记·算法
qqxhb11 小时前
零基础数据结构与算法——第四章:基础算法-排序(上)
java·数据结构·算法·冒泡·插入·选择
FirstFrost --sy13 小时前
数据结构之二叉树
c语言·数据结构·c++·算法·链表·深度优先·广度优先
森焱森13 小时前
垂起固定翼无人机介绍
c语言·单片机·算法·架构·无人机