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;
    }
}

提交结果:

相关推荐
灵智实验室6 分钟前
PX4位置速度估计技术详解(四):LPE 激光雷达高度融合的实现错误
算法·无人机·px 4
CQU_JIAKE15 分钟前
【A】3742,3387,并查集
算法
gihigo199816 分钟前
CHAN时延估计算法(二维/三维定位实现)
算法
freexyn37 分钟前
Matlab自学笔记七十六:表达式的展开、因式分解、化简、合并同类项
笔记·算法·matlab
样例过了就是过了39 分钟前
LeetCode热题 不同路径
c++·算法·leetcode·动态规划
迦南的迦 亚索的索1 小时前
AI_11_Coze_AI面试助手
人工智能·面试·职场和发展
dog2501 小时前
圆锥曲线和二次曲线
开发语言·网络·人工智能·算法·php
童园管理札记1 小时前
数字时代:学前教育的新改革
经验分享·职场和发展·学习方法·微信公众平台
Wadli1 小时前
27.单调队列
算法
Navigator_Z1 小时前
LeetCode //C - 1031. Maximum Sum of Two Non-Overlapping Subarrays
c语言·算法·leetcode