力扣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\]为待处理的数据 ![](https://file.jishuzhan.net/article/1728280083463933953/bd63bf8a6be7b8446c8e1ed50e11576e.webp) 做法: 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; } } } ```

相关推荐
xu_yule9 小时前
算法基础-单源最短路
c++·算法·单源最短路·bellman-ford算法·spfa算法
Evand J9 小时前
【MATLAB免费例程】多无人机,集群多角度打击目标,时间与角度约束下的协同攻击算法,附下载链接
算法·matlab·无人机
YGGP9 小时前
【Golang】LeetCode 118. 杨辉三角
算法·leetcode
蒲小英9 小时前
算法-二分查找
算法
-Thinker9 小时前
贪心算法解决找零钱问题
算法·贪心算法
sin_hielo9 小时前
leetcode 2054(排序 + 单调栈,通用做法是 DP)
数据结构·算法·leetcode
晨晖29 小时前
直接插入排序
c语言·数据结构·c++·算法
HUST9 小时前
C 语言 第七讲:数组和函数实践:扫雷游戏
c语言·开发语言·数据结构·vscode·算法·游戏·c#
玖剹9 小时前
字符串相关题目
c语言·c++·算法·leetcode
llz_1129 小时前
图(邻接表)-(DFS/BFS)-Dijkstra
算法·深度优先·dijkstra·宽度优先