日常刷题记录

移动零


题目链接

移动零

题目描述

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

复制代码
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

复制代码
输入: nums = [0]
输出: [0]

算法原理

快排的思想:数组划分区间、数组分块
双指针算法:利用数组下标来充当指针

  • 两个指针的作用:

    • cur:从左往右扫描数组,遍历数组
    • dest:已处理的区间内,非零元素的最后一个位置

    三个区间:

    0, dest\] :非零元素 \[dest + 1, cur - 1\] : 零元素 \[cur, n - 1\]:待处理元素 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/469b19e2ad1b42afa6102dc88174443e.png)



以此类推,直到扫描完整个数组

算法代码

java 复制代码
class Solution {
    public void moveZeroes(int[] nums) {
        int cur = 0, dest = -1;
        for (; cur < nums.length; cur++) {
            if (nums[cur] != 0) {
                dest++;
                int temp = nums[cur];
                nums[cur] = nums[dest];
                nums[dest] = temp;
            }
        }
    }
}
相关推荐
仰泳的熊猫16 小时前
题目2570:蓝桥杯2020年第十一届省赛真题-成绩分析
数据结构·c++·算法·蓝桥杯
Leinwin19 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
无极低码19 小时前
ecGlypher新手安装分步指南(标准化流程)
人工智能·算法·自然语言处理·大模型·rag
薛定谔的悦19 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts
软件算法开发20 小时前
基于海象优化算法的LSTM网络模型(WOA-LSTM)的一维时间序列预测matlab仿真
算法·matlab·lstm·一维时间序列预测·woa-lstm·海象优化
enjoy嚣士20 小时前
springboot之Exel工具类
java·spring boot·后端·easyexcel·excel工具类
罗超驿20 小时前
独立实现双向链表_LinkedList
java·数据结构·链表·linkedlist
superior tigre20 小时前
22 括号生成
算法·深度优先
盐水冰21 小时前
【烘焙坊项目】后端搭建(12) - 订单状态定时处理,来单提醒和顾客催单
java·后端·学习