力扣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;
            }
        }
    }
相关推荐
啦啦啦啦啦zzzz9 小时前
数据结构:二叉树的线索化
数据结构·算法
2401_872418789 小时前
算法入门:并查集(Disjoint Set / Union-Find):连通性问题的利器
算法
luj_17689 小时前
R语言生态优势与学习曲线分析
c语言·开发语言·网络·经验分享·算法
计算机安禾10 小时前
【算法分析与设计】第36篇:计算几何基础:凸包问题的分治与扫描线解法
大数据·人工智能·算法·机器学习·剪枝
货拉拉技术10 小时前
飞速发展的计算机视觉
人工智能·算法
如竟没有火炬10 小时前
寻找峰值——二分
java·开发语言·数据结构·python·算法·散列表
noipp10 小时前
推荐题目:洛谷 P1115 最大子段和
算法
Lumbrologist10 小时前
【C++】零基础入门 · 第 17 节:多线程编程基础
java·c++·算法
轻闲一号机11 小时前
【语音】笔记
前端·笔记·算法
aWty_11 小时前
实分析入门(12)--可测函数
学习·数学·算法·实变函数