[LeetCode]283.移动0(双指针)

张开发
2026/4/21 6:53:36 15 分钟阅读

分享文章

[LeetCode]283.移动0(双指针)
283.移动零一.题目描述https://leetcode.cn/problems/move-zeroes/description/二.思路分析要把0移动到末尾, 需要先找到0, 遍历寻找0的操作需要第一个指针保持其他元素位置相对不变要求记录元素的位置, 使用交换的操作完成移动, 由此需要第二个指针三.数组划分1.初始化cur 0; dest 0;cur表示现在处理的元素, cur前表示已处理的元素, cur后表示未处理的元素dest来分隔非0和0元素2.cur遍历,dest分隔当cur所指元素为0时, cur往后走, 直到遇到非0元素停下;当cur遇到0时, 让dest, 代表非0元素1, 让cur和dest所指元素交换位置当cur越界, 代表所有元素处理完成四.具体代码实现 O(n)classSolution{publicvoidmoveZeroes(int[]nums){for(intcur0,dest-1;curnums.length;cur){if(nums[cur]!0){inttmpnums[cur];nums[cur]nums[dest];nums[dest]tmp;}}}}

更多文章