leetcode刷题之283:移动零

问题

实现思路

首先, 将dest指向-1 位置, cur指向下标为0 的位置, 在cur遍历的过程中:

  1. 遇到非零元素则与下标dest+1 位置的元素交换,

  2. 若遇到零元素则只继续cur遍历.

下标为1 的位置上是 非零元素 执行1) 交换得到右图结果 随后cur++ 得到下图结果

下标为2 的位置上是零元素 执行2)

下标为3 的位置上是非零元素 执行1) 交换得到右图结果 随后cur++ 得到下图结果

下标为4 的位置上是非零元素, 执行1) 交换得到右图结果

遍历结束, 实现要求

代码:

java 复制代码
class Solution {
    public void moveZeroes(int[] nums) {
        int cur = 0, dest = -1;
        while(cur < nums.length) {
            if(nums[cur] == 0) {
                cur++;
            } else {
                swap(nums, cur, dest+1);
                cur++;
                dest++;
            }
        }
    }

    public void swap(int[] nums, int left, int right) {
        int tmp = nums[left];
        nums[left] = nums[right];
        nums[right] = tmp;
        return;
    }
}

提交结果:

相关推荐
王老师青少年编程1 分钟前
csp信奥赛C++高频考点专项训练之贪心算法 --【删数问题】:删数问题2
c++·算法·贪心·csp·信奥赛
hanbr2 分钟前
Leetcode刷题总结(1)
算法·leetcode·职场和发展
B站_计算机毕业设计之家2 分钟前
计算机毕业设计:Python股票投资辅助决策系统 django框架 request爬虫 协同过滤算法 数据分析 可视化 大数据 大模型(建议收藏)✅
爬虫·python·深度学习·算法·django·flask·课程设计
_日拱一卒4 分钟前
LeetCode:随机链表的复制
算法·leetcode·链表
菜菜的顾清寒6 分钟前
力扣笔记自用
笔记·算法·leetcode
故事还在继续吗11 分钟前
C++11关键特性
开发语言·c++·算法
zzzsde12 分钟前
【Linux】线程概念与控制(2)线程控制与核心概念
linux·运维·服务器·开发语言·算法
Gh0st_Lx20 分钟前
【8】分类任务原理
算法·分类·数据挖掘
WolfGang00732120 分钟前
代码随想录算法训练营 Day45 | 图论 part03
算法·图论
a里啊里啊22 分钟前
软考-软件评测师:知识点整理(六)——数据结构与算法
数据结构·算法·链表·软考·软件评测师