leetcode 283. Move Zeroes

手把手教你用Siemens EDA破解工具搞定PADs VX2.7安装与卡死问题 本文详细介绍了如何使用Siemens EDA工具解决PADs VX2.7的安装与卡死问题。从License配置到性能调优,提供全面的解决方案,帮助工程师高效完成电子设计自动化任务。特别针对常见的卡顿现象,给出了输入法兼容性调整、图形性能优化等实用技巧。 阅读详情

Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements.

Example:

Input: [0,1,0,3,12]
Output: [1,3,12,0,0]

题目要求把0移到最后,而且不能用一个新数组保存。

比较笨的方法是冒泡法,每个0都冒泡调到最后,但是复杂度会比较高,这里用一个时间复杂度O(N),空间复杂度O(1)的方法。

思路:
只需要从左到右把0和非0对换,这样0后面的非0元素会占据原来0的位置,就达到了0被移到右边的效果。

比如上面的例子:
0,1,0,3,12

左边第一个0和第一个非0(1)对换,得到
1,0,0,3,12
左边第一个0和第一个非0(3)对换,得到
1,3,0,0,12
左边第一个0和第一个非0(12)对换,得到
1,3,12,0,0
也就得到了结果

那么需要两个指针,一个指向左边起第一个0(leftZeroAt),一个指向左边起第一个非0(cur)
刚开始它们都指向第0个元素,
当cur指向的元素为0时,cur++
cur非0时就和leftZeroAt指向的元素对换,然后cur和leftZeroAt都右移。

这时肯定会想要是leftZeroAt指向的元素不是0怎么办,
举个例子:
1,0,0,3,12
开始的时候cur和leftZeroAt都指向1,因为cur指向非0,所以和leftZeroAt指向的元素对换,自己和自己换相当于不变。然后cur和leftZeroAt都右移,指向0,因为cur指向0时右移,这时cur就和leftZeroAt分开了,leftZeroAt停在了0,而cur右移寻找非0。
也就是说cur和leftZeroAt的起点是一样的,如果指向非0,它们会同时右移,如果指向0,leftZeroAt会停在0,而cur去寻找非0。这时候,如果
(1) leftZeroAt和cur相邻
比如:
1, 0, 2, 3
leftZeroAt: 0, cur: 2
对换后,leftZeroAt右移指向对换后的0,cur右移指向3
(2) leftZeroAt和cur不相邻
1,0,0,2, 3
leftZeroAt: 0, cur: 2
对换后,leftZeroAt右移指向下一个0,cur右移指向3

    public void moveZeroes(int[] nums) {
        if (nums == null || nums.length == 0) {
            return;
        }
        
        for(int leftZeroAt = 0, cur = 0; cur < nums.length; cur++) {
            if (nums[cur] != 0) {
                swap(nums, leftZeroAt, cur);
                leftZeroAt++;
            }
        }
    }
    
    public void swap(int[] nums, int leftZeroAt, int cur) {
        if (leftZeroAt == cur) {
            return;
        }
        
        int tmp = nums[leftZeroAt];
        nums[leftZeroAt] = nums[cur];
        nums[cur] = tmp;
    }
rk3399开发环境的介绍 由于Bluez的介绍文档有限,以及对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度,学习曲线也相对较陡,所以我有了这个想法,专门对Bluez做一个系统性的介绍,尽可能的涵盖所有内容。 阅读详情

相关推荐

STM32以太网通信-STM32以太网外设(ETH)

通过 DMA 控制器进行介质访问控制 (MAC) STM32F4xx系列控制器内部集成了一个以太网外设,它实际上是一个通过DMA控制器进行介质访问控制(MAC),它的功能就是实现MAC 层的任务。 借助以太网外设,STM32F4xx 控制器可以通过ETH 外设按照IEEE 802.3-2002 标准发送和接收MAC 数据包。 ETH 内部自带专用的DMA 控制器用于MAC,ETH 支持两个工业标准接口介质独立接口(MII)和简化介质独立接口(RMII)用于与外部PHY 芯片连接。MII 和RMII 接口用于

暖暖_的_纠结的博客 2万+

LeetCode 283. 移动零 Move Zeroes

Table of Contents 一、中文版 二、英文版 三、My answer 四、解题报告 一、中文版 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 二、英文版 Given a...

三妹的博客 288

小龙虾 OpenClaw 安装全攻略:本地部署 AI 智能体一步到位

OpenClaw(昵称小龙虾)是一款 MIT 开源协议的本地优先 AI 智能体执行网关,支持多平台接入、本地部署,能实现自然语言驱动的设备自动化操作,区别于纯对话 AI,可直接操控系统执行实际任务,数据全程本地存储更安全。本文带来 2026 最新版 OpenClaw 安装教程,适配 Windows/macOS/Linux 全系统,新手也能一键搞定。

lujiawei00的专栏 1973

LeetCode 283. Move Zeroes (力扣283)

遍历数组,把非零元素移到数组钱前面(从下标零开始),剩下的元素用零补充。

Byte_Me_A_Bit的博客 216

模拟电子技术课设-压控信号发生器

正弦波产生电路的目的就是使电路产生一定频率和幅度的正弦波,我们一般在放大电路中引入正反馈,并创造条件,使其产生稳定可靠的振荡。由于图2.3-1所示电路中存在RC电路和积分电路两个延迟环节,在实用电路中,将它们“合二为一”,即去掉方波发生电路中的RC回路,使积分运算电路即作为延迟环节,又作为方变三角波电路,滯回比较器和积分运算电路的输出互为另一个电路的输入。接着对各单元电路的工作原理进行了分析,由直流稳压电源电路提供所需电压,文氏振荡器产生正弦波,滞回比较器产生方波,滞回比较器与积分器连接产生三角波。

Sulfurone的博客 5324

SDIO_WiFi驱动学习之SDIO架构介绍及源码分析

一、引言 因为WiFi驱动比较复杂,所以WiFi驱动的博客将分为两篇来写。 本篇博客主要介绍Linux下的SDIO架构及源码分析。 二、SDIO WiFi SDIO-Wifi模块是基于SDIO接口的符合wifi无线网络标准的嵌入式模块,内置无线网络协议IEEE802.11协议栈以及TCP/IP协议栈,能够实现用户主平台数据通过SDIO口到无线网络之间的转换。SDIO具有传输数据快,兼容SD、MMC接口等特点。 对于SDIO接口的WiFi,首先,它是一个SDIO的卡设备,然后具备了WiFi的功能。所

陈子陌的博客 1万+

LeetCode 283. Move Zeroes

LeetCode 283. Move Zeroes (easy) 主要知识点:快慢指针 优先级:4(最优解有点绕脑子)

温迪今天刷题了吗 375

从标准到实战:详解IEC 61000-4-2下的ESD电路防护设计

本文深入解析IEC 61000-4-2标准下的ESD电路防护设计,从静电防护的基础原理到实战应用。详细介绍了接触放电与空气放电的区别、防护器件选型要点(如TVS管和压敏电阻)以及PCB布局的黄金法则,帮助工程师有效提升电子产品的抗静电能力,确保设备在严苛环境下的稳定运行。

weixin_33704234的博客 512

[leetcode] 283. Move Zeroes 解题报告

题目链接:https://leetcode.com/problems/move-zeroes/ Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. For exam

小榕流光的专栏 566

Android HDMI-CEC协议解析:从机顶盒到电视的无缝遥控联动

本文深入解析Android HDMI-CEC协议,实现机顶盒与电视间的无缝遥控联动。通过剖析设备角色、消息格式及核心操作码,并结合Android HdmiControlManager API实战,详细讲解如何实现电源同步、按键穿透及音量控制,最终解决多设备遥控繁琐的痛点,提升用户体验。

egg99的博客 974

AI自动打游戏全攻略:从环境搭建到Agent训练实战

本文系统介绍了AI自动打游戏的技术实现方案,重点解析了强化学习(DQN算法)在贪吃蛇游戏中的应用。文章从技术选型入手,对比了强化学习与计算机视觉两种方案,详细说明了开发环境配置步骤,并深入讲解了DQN模型构建、游戏环境封装、训练优化等核心环节。通过经验回放和目标网络等技术,有效提升了AI的学习效率和稳定性。该方案具有通用性,只需调整参数即可应用于其他简单游戏场景,为开发者实现游戏AI提供了完整的技术路径。

milk416666的博客 4118

leetcode283. Move Zeroes(思路及优化)

题目描述: Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements. Example: Input: [0,1,0,3,12] Output: [1,3,12,0,0] Note: You ...

中华小当家的博客 300

搭建 Newman + Postman + Git + Jenkins 环境教程

一步步搭建 Newman、Postman、Git 和 Jenkins 的环境。这些工具常用来做 API 测试和 CI/CD 自动化,尤其是 Postman 和 Newman 搭配 Git 和 Jenkins,能实现 API 集合的版本管理和自动测试。

Criss@陈磊 435

LeetCode 283. Move Zeroes 题解

本题是双指针的经典应用问题,主要考察对双指针技巧的理解和使用。通过使用慢指针和快指针,我们可以在原地将所有零移动到数组的末尾,同时保持非零元素的相对顺序。双指针的核心思想是:慢指针指向当前已处理的非零元素的末尾,快指针遍历整个数组,当找到非零元素时,将其移动到慢指针的位置,然后慢指针右移。最后,将慢指针到数组末尾的所有元素设置为零。这种方法不仅适用于移动零问题,还可以应用于许多其他需要原地修改数组的问题,例如删除排序数组中的重复元素、移除元素等。掌握双指针的使用,对于解决这类问题非常重要。

cannonjinx的博客 1748

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

LeetCode 283 move Zeroes

开始准备算法面试,毕竟马上找工作。将最近自己在leetcode做的题目记录一下,方便自己复习。同时也提供给有需要的朋友,https://leetcode.com/还没账号的朋友赶快去注册一个吧。 内容将包括:自己第一遍做的想法和类比其他人的优化。 优化主要是参考:慕课网一个实战课程:http://coding.imooc.com/class/82.html。感兴趣的可以看一下 正文: 28

老夫编代码就是一把梭 475

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

力扣LeetCode 283. Move Zeroes题解java

题目 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/move-zeroes 解题思路 使用指针count来指向数组中第1个0。因为考虑到当多个0在一块时,只需要让第1个0与第1个非0元素交换计科,而不用交换每

mrhanzhou5273的博客 305

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Leetcode283. Move Zeroes

给定一个数组,将所有 0 移动到数组的末尾。

magic_jiayu的博客 205

[leetcode]python 283. Move Zeroes

[leetcode]python 283. Move Zeroes Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. For exa...

Rh's blog 147

【leetcode】283. Move Zeroes

problem 283.Move Zeroes solution 先把非零元素移到数组前面,其余补零即可。 class Solution { public: void moveZeroes(vector<int>& nums) { int j = 0; for(int i=0; i<nums.size(); ...

weixin_30739595的博客 83

LeetCode--283. Move Zeroes

283. Move Zeroes 题目描述: Given an array nums, write a function to move all 0's to the end of it while maintaining the relative order of the non-zero elements. For example, given nums = [0,

BestFSQ的博客 523

【leetcode】283.move_zeroes

【leetcode】283.Move ZeroesGiven an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements.For example, given nums = [0, 1, 0, 3, 12],

绯浅yousa的笔记 428

Leetcode 283 Move Zeroes

题目描述 给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数 思路分析之基本套路 在不申请新的数组的前提下,遍历一遍数组,而且只使用一个索引变量,是无法求解这个题目。 既然无法使用一个索引变量,那我们是否能使用...

herosunly的博客 1万+

【Leetcode-Easy-283】Move Zeroes

【Leetcode-Easy-283】Move Zeroes题目Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements.For example, given nums = [0, 1, 0,

LYZ 789

【LeetCode】283. Move Zeroes(移动零)

【LeetCode】283. Move Zeroes(移动零)题目链接:https://leetcode.com/problems/move-zeroes/description/难度:Easy问题描述:Given an array nums, write a function to move all 0's to the end of it while maintaining the relat...

Mr.王同学 736

leetcode第283题 ,Move Zeroes

题目:Move Zeroes LeetCode:(https://leetcode.com/problems/move-zeroes/description/)**Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non

皮蛋瘦肉的博客 277

Leetcode学习笔记:#283. Move Zeroes

Leetcode学习笔记:#283. Move Zeroes Given an array nums, write a function to move all 0’s to the end of it while maintaining the relative order of the non-zero elements. 实现: public void moveZeroes(int[] nu...

ccystewart的博客 137
上一篇: leetcode 99. Recover Binary Search Tree(恢复二叉搜索树)
下一篇: leetcode 86. Partition List(分割链表)
蓝羽飞鸟
博客等级 码龄8年 1万+粉丝 727原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值