力扣283:移动零(JAVA)

题目描述:

意思是将所有0移到最后的同时其余非0元素位置仍然不变

如 1 2 0 5 2 0 经过移动零后变为 1 2 5 2 0 0

思路:使用双指针的思路来写

fast:从左往右遍历数组

slow:非零元素最后的一个位置

将数组分为3个区间

0,slow为处理好的非0数据,slow永远指向最后一个非0数据

slow+1,fast处理好的为0的数据

fast+t,arr.length-1为待处理的数据

做法:

1.fast遇到0元素:fast++

2.fast遇到非0元素:slow++,然后交换数据,最后fast++

java 复制代码
    public void moveZeroes(int[] nums) {
        int fast = 0;
        int slow = -1;
        for(fast = 0; fast < nums.length; fast++){
            if(nums[fast] != 0){
                slow++;
                // 交换数据
                int tmp = nums[slow];
                nums[slow] = nums[fast];
                nums[fast] = tmp;
            }
        }
    }
相关推荐
文丑颜不良啊9 小时前
LeetCode576~600题目解析
java·leetcode
lisw059 小时前
分岔论揭示演化突变密码
开发语言·算法·数学建模
aqiu1111119 小时前
C++ TopK:使用 nth_element 快速求最小 K 个数(蓝桥杯 / LeetCode 可用)
算法
Suprman9 小时前
平面排版问题的数学建模与算法设计
算法·数学建模·排序算法·排版套料
FPGA信号处理9 小时前
【应用随机过程】:更新过程与马尔可夫链入门
算法·概率论
重生之小比特9 小时前
【算法拾光】二分查找|在排序数组中查找元素的第一个和最后一个位置 + 搜索旋转排序数组
数据结构·算法·排序算法
吴可可1239 小时前
DXF与AAMA格式转换模块推荐
算法
重生之小比特9 小时前
【算法拾光】二分查找|搜索旋转排序数组 + 寻找旋转排序数组中的最小值
算法
YukiRinLL10 小时前
查找与排序算法:复杂度、稳定性
数据结构·算法·排序算法
招聘风控观察18 小时前
招聘质量管理是什么?招聘质量的定义与评价口径完整解释
职场和发展