题目链接:283. 移动零 - 力扣(LeetCode)

题目描述:

给定一个数组 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

current (现行的) dest(目的地)

解法思路:

  • 使用双指针算法(数组下标代表指针)
    • cur:从左往右循环遍历数组
    • dest:已处理区间,非零元素的最后一个位置
  • 会出三个区间
    • [0 , dest]:非0区间
    • [dest+1 , cur-1]:0区间
    • [cur , length-1]:需要进行判断的区间

代码实现:

// 使用双指针法将数组中的所有 0 移动到末尾,同时保持非零元素的相对顺序
for (int cur = 0, dest = -1; cur < nums.length; cur++) {// 当前遍历的元素不为 0if (nums[cur] != 0) {// dest 指针向右移动一位,表示找到一个可以放置非零数的位置dest++;// 将当前非零值交换到 dest 所在位置// 这样做可以保证所有非零元素都被移动到了前面,并且顺序不变int tem = nums[cur];nums[cur] = nums[dest];nums[dest] = tem;// 如果 cur == dest,那么就是自己和自己交换,不影响。// 如果 cur > dest,说明中间有 0,把非零数向前移动,把 0 向后挤。}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/87598.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/87598.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/87598.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2025年7月4日漏洞文字版表述一句话版本(漏洞危害以及修复建议),通常用于漏洞通报中简洁干练【持续更新中】,漏洞通报中对于各类漏洞及修复指南

漏洞及修复指南 一、暗链 危害&#xff1a;攻击者通过技术手段在用户网页中插入隐藏链接或代码&#xff0c;并指向恶意网站&#xff0c;可导致用户信息泄露、系统感染病毒&#xff0c;用户访问被劫持至恶意网站&#xff0c;泄露隐私或感染恶意软件&#xff0c;被黑客利用进行…

python --飞浆离线ocr使用/paddleocr

依赖 # python3.7.3 paddleocr2.7.0.2 paddlepaddle2.5.2 loguru0.7.3from paddleocr import PaddleOCR import cv2 import numpy as npif __name__ __main__:OCR PaddleOCR(use_doc_orientation_classifyFalse, # 检测文档方向use_doc_unwarpingFalse, # 矫正扭曲文档use…

数据结构与算法:贪心(三)

前言 感觉开始打cf了以后贪心的能力有了明显的提升,让我们谢谢cf的感觉场。 一、跳跃游戏 II class Solution { public:int jump(vector<int>& nums) {int n=nums.size();//怎么感觉这个题也在洛谷上刷过(?)int cur=0;//当前步最远位置int next=0;//多跳一步最远…

【Redis篇】数据库架构演进中Redis缓存的技术必然性—高并发场景下穿透、击穿、雪崩的体系化解决方案

&#x1f4ab;《博主主页》&#xff1a;    &#x1f50e; CSDN主页__奈斯DB    &#x1f50e; IF Club社区主页__奈斯、 &#x1f525;《擅长领域》&#xff1a;擅长阿里云AnalyticDB for MySQL(分布式数据仓库)、Oracle、MySQL、Linux、prometheus监控&#xff1b;并对…

Docker 实践与应用案例

引言 在当今的软件开发和部署领域&#xff0c;高效、可移植且一致的环境搭建与应用部署是至关重要的。Docker 作为一款轻量级的容器化技术&#xff0c;为解决这些问题提供了卓越的方案。Docker 通过容器化的方式&#xff0c;将应用及其依赖项打包成一个独立的容器&#xff0c;…

《论三生原理》以非共识路径实现技术代际跃迁‌?

AI辅助创作&#xff1a; 《论三生原理》以颠覆传统数学范式的非共识路径驱动多重技术代际跃迁&#xff0c;其突破性实践与争议并存&#xff0c;核心论证如下&#xff1a; 一、技术代际跃迁的实证突破‌ ‌芯片架构革新‌ 为华为三进制逻辑门芯片提供理论支撑&#xff0c;通过对…

一体机电脑为何热度持续上升?消费者更看重哪些功能?

一体机电脑&#xff08;AIO&#xff0c;All-in-One&#xff09;将主机硬件与显示器集成于单一机身。通常仅需连接电源线&#xff0c;配备无线键盘、鼠标即可启用。相比传统台式电脑和笔记本电脑&#xff0c;选购一体机的客户更看重一体机的以下特点。 一体机凭借其节省空间、简…

无人机载重模块技术要点分析

一、技术要点 1. 结构设计创新 双电机卷扬系统&#xff1a;采用主电机&#xff08;张力控制&#xff09;和副电机&#xff08;卷扬控制&#xff09;协同工作&#xff0c;解决绳索缠绕问题&#xff0c;支持30米绳长1.2m/s高速收放&#xff0c;重载稳定性提升。 轴双桨布局…

【大模型推理】工作负载的弹性伸缩

基于Knative的LLM推理场景弹性伸缩方案 1.QPS 不是一个好的 pod autoscaling indicator 在LLM推理中&#xff0c; 为什么 2. concurrency适用于单次请求资源消耗大且处理时间长的业务&#xff0c;而rps则适合较短处理时间的业务。 3.“反向弹性伸缩”的概念 4。 区分两种不同的…

STM32F103_Bootloader程序开发12 - IAP升级全流程

导言 本教程使用正点原子战舰板开发。 《STM32F103_Bootloader程序开发11 - 实现 App 安全跳转至 Bootloader》上一章节实现App跳转bootloader&#xff0c;接着&#xff0c;跳转到bootloader后&#xff0c;下位机要发送报文‘C’给IAP上位机&#xff0c;表示我准备好接收固件数…

AI驱动的未来软件工程范式

引言&#xff1a;迈向智能驱动的软件工程新范式 本文是一份关于构建和实施“AI驱动的全生命周期软件工程范式”的简要集成指南。它旨在提供一个独立、完整、具体的框架&#xff0c;指导组织如何将AI智能体深度融合到软件开发的每一个环节&#xff0c;实现从概念到运维的智能化…

Hawk Insight|美国6月非农数据点评:情况远没有看上去那么好

7月3日&#xff0c;美国近期最重要的劳动力数据——6月非农数据公布。在ADP遇冷之后&#xff0c;市场对这份报告格外期待。 根据美国劳工统计局公布报告&#xff0c;美国6月非农就业人口增加 14.7万人&#xff0c;预期 10.6万人&#xff0c;4月和5月非农就业人数合计上修1.6万人…

Python 的内置函数 reversed

Python 内建函数列表 > Python 的内置函数 reversed Python 的内置函数 reversed() 是一个用于序列反转的高效工具函数&#xff0c;它返回一个反向迭代器对象。以下是关于该函数的详细说明&#xff1a; 基本用法 语法&#xff1a;reversed(seq)参数&#xff1a;seq 可以是…

沟通-交流-说话-gt-jl-sh-goutong-jiaoliu-shuohua

沟通,先看|问状态(情绪) 老婆下班回家,我说,到哪儿了,买点玉米哦;她说你为啥不买, 我说怎么如此大火气, 她说你安排我&#xff0c;我不情愿;你怎么看 和女人沟通不能目标优先 先问状态并表达关心 用感谢代替要求&#xff08;“你上次买的玉米特别甜&#xff0c;今天突然又馋了…

Ubuntu20.04运DS-5

准备工作&#xff1a; cd /home/rlk/rlk/runninglinuxkernel_5.0 #make clean mkdir _install_arm64/dev sudo mknod _install_arm64/dev/console c 5 1 ./build_ds5_arm64.sh git checkout boot-wrapper-aarch64/fvp-base-gicv3-psci.dtb ./build_ds5_arm64.sh创建工程步骤2.5…

区块链网络P2P通信原理

目录 区块链网络P2P通信原理引言:去中心化的网络基石1. P2P网络基础架构1.1 区块链网络拓扑1.2 节点类型对比2. 节点发现与连接2.1 初始引导过程2.2 节点发现协议3. 网络通信协议3.1 消息结构3.2 核心消息类型4. 数据传播机制4.1 交易传播流程4.2 Gossip协议实现4.3 区块传播优…

RNN和Transformer区别

RNN&#xff08;循环神经网络&#xff09;和 Transformer 是两种广泛应用于自然语言处理&#xff08;NLP&#xff09;和其他序列任务的深度学习架构。它们在设计理念、性能特点和应用场景上存在显著区别。以下是它们的详细对比&#xff1a;1. 基本架构RNN&#xff08;循环神经网…

[学习记录]Unity-Shader-几何着色器

几何着色器是可编程渲染管线中的一个可选阶段&#xff0c;位于顶点着色器之后和片段着色器之前。其核心能力在于动态生成和操作几何体图元。 一.图元 了解图元是理解几何着色器的基础和前提&#xff0c;因为几何着色器的工作就是接收图元&#xff0c;然后输出图元。 几何着色…

Paimon 布隆过滤器索引

布隆过滤器原理布隆过滤器的最优参数推导是其理论核心&#xff0c;理解了这个过程&#xff0c;就能明白 BloomFilter64 构造函数里计算公式的由来了。下面我们一步步来推导。首先&#xff0c;我们定义几个关键变量&#xff1a;n: 预估要插入的元素数量 (对应代码中的 items)。m…

Python-GUI-wxPython-布局

1 需求 2 接口 wx.Sizer().Add() proportion&#xff08;比例&#xff09;参数是一个整数&#xff0c;用于指定当父布局管理器的空间有剩余时&#xff0c;被添加的对象&#xff08;这里是 general_sizer 及其包含的组件&#xff09;在布局方向上可以占据的额外空间的比例。 当…