力扣--283.移动零

题目

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入: nums = [0,1,0,3,12]

输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]

输出: [0]

提示:

复制代码
1 <= nums.length <= 104
-231 <= nums[i] <= 231 - 1

代码

class Solution {

public void moveZeroes(int[] nums) {

int index = 0;

for(int i = 0;i< nums.length;i++){

if(nums[i] != 0){

nums[index] = nums[i];

index++;

}

}

for(int i = index;i< nums.length;i++){

nums[i] = 0;

}

}

}

双指针

public void moveZeroes(int[] nums) {

if (nums.length == 1) {

return;

}

复制代码
    int slow = 0;
    for (int fast = 1; fast < nums.length; fast++) {
        if (nums[slow] == 0 && nums[fast] != 0) {
            nums[slow] = nums[fast];
            nums[fast] = 0;
            slow++;
        } else if (nums[slow] != 0) {
            slow++;
        }
    }
}
相关推荐
晨曦夜月2 分钟前
笔试强训day7
开发语言·c++·算法
iAkuya8 分钟前
(leetcode)力扣100 14合并区间(差分/排序)
算法·leetcode·职场和发展
leiming638 分钟前
C++ 02 函数模板案例
开发语言·c++·算法
自然常数e1 小时前
深入理解指针(6)
c语言·数据结构·算法·visual studio
Xの哲學1 小时前
Linux VxLAN深度解析: 从数据平面到内核实现的全面剖析
linux·服务器·算法·架构·边缘计算
TL滕1 小时前
从0开始学算法——第十八天(分治算法练习)
笔记·学习·算法
一杯美式 no sugar1 小时前
数据结构——栈
c语言·数据结构·
月明长歌1 小时前
【码道初阶】【LeetCode 958】判定完全二叉树:警惕 BFS 中的“管中窥豹”陷阱
算法·leetcode·宽度优先
CodeAmaz2 小时前
Java 垃圾回收(GC)算法详解
java·jvm·算法·垃圾回收算法
蒙奇D索大2 小时前
【数据结构】考研408 | 冲突解决精讲: 拉链法——链式存储的艺术与优化
数据结构·笔记·考研·改行学it