leetcode 283. 移动零

代码:

class Solution {public void swap(int[] nums,int m,int n){int tmp=nums[m];nums[m]=nums[n];nums[n]=tmp;}public void moveZeroes(int[] nums) {int cur=0;int dest=-1;int n=nums.length;for(;cur<n;cur++){if(nums[cur]!=0){dest++;swap(nums,cur,dest);}}}
}

题解:

        根据题意,我们要将数组进行处理,分为 非0 的区间和 全为0 的区间

        现在我们通过 cur 指针遍历数组并按相关规则对数据进行处理,遍历过的区间是 已处理 区间,还未遍历的区间是未处理区间,而 已处理 区间中又分为 非0 的区间和 全为0 的区间,我们设定 dest 指针指向最后一个非0数据

        这样划分,当 cur 指针遍历完数组以后,数组就被 dest 指针划分成了题意中左边为非 0 元素,右边为 0 的结构

        现在我们根据题目所给的示例来介绍大致流程

        我们向方法中传入了数组 nums=[0,1,0,3,12]

        我们让 cur 指针(并不是真的指针,方便理解才这样说)指向下标 0,用来遍历数组,dest 指针指向下标 -1 ,因为 dest 指针的含义是指向最后一个非 0 数据,而现在 cur 指针还没有遍历到非 0 数据,所以先指向 -1

        cur 指针向后遍历的时候会遇到两种情况:

1.cur 指针遇到 0

        根据上面的图以及分析,我们知道,0 应该在指针 dest 和 cur 之间,所以我们得出,当 nums[cur]==0 --> cur++;

2.cur 指针遇到非 0 数据

        由于 dest 指针要指向最后一个非 0 数据,所以 dest 首先要 ++,为该非 0 数据提供一个空位,此时 dest 指针指向的是 0 数据,cur 指针指向的是非 0 的数据,于是将 cur 和 dest 指针指向的数据进行交换

        我们得到关系,当 nums[cur]!=0 --> dest++ , swap(nums[cur],nums[dest]) , cur++

根据两种情况得到的关系,编写代码即可

        

        

        

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

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

相关文章

数字系列——数字经济(2)​

上次呢&#xff0c;已经为大家捋了什么是数字经济&#xff1f;、数字经济的特点有哪些&#xff1f;和数字经济的构成&#xff0c;对于数字经济有了基础性的了解&#xff0c;今天继续为大家捋一捋。 数字经济的发展 1.互联网的普及 互联网作为数字经济的坚实基础&#xff0c;其…

香港身份、香港永居身份、香港护照区别,三种证件之间是什么关系?

香港身份、香港永居身份、香港护照区别&#xff0c;三种证件之间是什么关系&#xff1f; 在港“通常性”住满7年之后&#xff0c;可以申请永居身份&#xff01; 香港身份&#xff1a;也可以称之为临时身份&#xff0c;无论通过香港优才计划、高才通计划、专才计划或者留学拿身份…

基于QT的俄罗斯方块游戏设计与实现

基于QT的俄罗斯方块游戏设计与实现 摘要&#xff1a;信息时代正处于高速发展中&#xff0c;而电子游戏已经成为人生活中或不可少的消磨工具之一。科技时代在不断地高速发展中&#xff0c;游戏相关编程设计也随着发展变得越来越重要&#xff0c; 俄罗斯方块游戏是一款古老传遍世…

引领Serverless构建之路,亚马逊云科技re:Invent 2023首日主题演讲重磅发布

在每年的亚马逊云科技re:lnvent大会&#xff0c;由Peter DeSantis带来的《周一晚间直播》是re:lnvent大会的第一个并让人值得期待的主题演讲。作为亚马逊云科技高级副总裁&#xff0c;Peter发布了数据库和应用领域的三项Serverless创新&#xff0c;使客户能够更快、更轻松地扩展…

Java最难的语法<泛型>

时间过得很快&#xff0c;我们马上就进入了&#xff0c;Java最难语法的学习&#xff0c;加油吧&#xff01; 1.包装类 想要学好泛型就要了解包装类。 在Java中&#xff0c;由于基本类型不是继承自Object&#xff0c;为了在泛型代码中可以支持基本类型&#xff0c;Java给每个…

基于springBoot实现的学生成绩在线管理

一、系统架构 前端&#xff1a;html | js | css | jquery | bootstrap 后端&#xff1a;springboot | ibatis 环境&#xff1a;jdk1.7 | mysql | maven 二、代码及数据库 三、功能介绍 01. 登录页 02. 管理员-首页 03. 管理员-学生管理 04. 管理员-教师管理 05. 管理员-班级管…

任务管理流程及任务管理工具

Leangoo领歌是一款永久免费的专业的敏捷开发管理工具&#xff0c;提供端到端敏捷研发管理解决方案&#xff0c;涵盖敏捷需求管理、任务协同、进展跟踪、统计度量等。 Leangoo支持敏捷研发管理全流程&#xff0c;包括小型团队敏捷开发&#xff0c;规模化敏捷SAFe&#xff0c;Scr…

【LeetCode】每日一题 2023_11_29 无限集中的最小数字(哈希/堆)

文章目录 刷题前唠嗑题目&#xff1a;无限集中的最小数字题目描述代码与解题思路偷看大佬题解 结语 刷题前唠嗑 LeetCode&#xff1f;启动&#xff01;&#xff01;&#xff01; 今天的题目也比较的简单&#xff0c;因为数据量不大&#xff0c;所以什么做法都能过的去 题目&a…

主流之选!Galaxybase荣获工信部赛宝信创解决方案全国三等奖

喜报&#xff01;“创邻图智能方案”再获工信部官方认可&#xff01; 11月23日&#xff0c;由工业和信息化部电子第五研究所和中国通信企业协会联合主办的“第二届中国赛宝信息技术应用创新优秀解决方案征集活动”结果正式公布&#xff0c;创邻科技Galaxybase智能风控解决方案…

leetcode刷题详解十一

⭕️583. 两个字符串的删除操作 思路&#xff1a;核心代码就是最长公共子序列&#xff0c;但是需要注意的是结果 就是如果说公共子序列为0&#xff0c;则需要两个字符串长度的才行 如果有&#xff0c;就是 n m ∗ 2 d p [ n ] [ m ] nm*2dp[n][m] nm∗2dp[n][m] int minDist…

【LeetCode刷题】数组篇1

&#x1f387;数组简单题Part &#x1f308; 开启LeetCode刷题之旅 &#x1f308; 文章目录 &#x1f387;数组简单题Part&#x1f370;1.两数之和&#x1f451;思路分析1.暴力法2.哈希表法 &#x1f370;26.删除有序数组中的重复项&#x1f451;思路分析1.双指针2.利用vector…

Trapcode Suite 2024.0.2

Trapcode Suite是一款用于在After Effects中模拟和建模3D粒子和效果的软件。 该软件包包含11种不同的工具&#xff0c;可以帮助用户模拟火、水、烟、雪等粒子效果&#xff0c;以及创建有机视觉效果和3D元素。它还支持在AE与PR 2022插件&#xff0c;使得用户可以轻松地在后期制作…

11月第4周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年11月20日-11月26日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数、带货数据等维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营…

《第一行代码:Android》第三版-如何为一个Activity添加layout文件

确切地说就是讲如何给一个不带view的Activity添加一个view&#xff0c;就是添加一个layout文件。 新建安卓项目&#xff0c;如果选择&#xff1a;就会给你创建一个没有view的Activity&#xff0c;如果后来你发现需要为这个Activity添加view&#xff0c;就是添加一个布局文件怎…

又有两大巨头官宣加入鸿蒙, 鸿蒙已成, 华为余承东说得没错

自从华为发布HarmonyOS 4系统后&#xff0c;宣布下一个鸿蒙版本将不再支持安卓应用&#xff0c;并启动鸿蒙原生应用&#xff0c;随后国内巨头纷纷响应&#xff0c;为鸿蒙系统开发原生应用。 如今&#xff0c;又有两大巨头官宣加入鸿蒙&#xff0c;一家是广汽传祺&#xff0c;M…

软著项目推荐 深度学习图像风格迁移 - opencv python

文章目录 0 前言1 VGG网络2 风格迁移3 内容损失4 风格损失5 主代码实现6 迁移模型实现7 效果展示8 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 深度学习图像风格迁移 - opencv python 该项目较为新颖&#xff0c;适合作为竞赛课题…

CodeTON Round #7 (Div. 1 + Div. 2)

A.jagged Swaps 题意&#xff1a; 给出一个包含 n n n个数字的序列&#xff0c;每次可以选择一个同时大于左右两边相邻的数字&#xff0c;将这个数字与它右边的数字交换&#xff0c;问能否在经过若干次操作后使序列变为升序。 分析&#xff1a; 由于交换只能向后进行&#…

Java 基础学习(四)操作数组、软件开发管理

1 操作数组 1.1.1 System.arraycopy 方法用于数组复制 当需要将一个数组的元素复制到另一个数组中时&#xff0c;可以使用System.arraycopy方法。它提供了一种高效的方式来复制数组的内容&#xff0c;避免了逐个元素赋值的繁琐过程。相对于使用循环逐个元素赋值的方式&#x…

C#-串口通信入门及进阶扩展

目录 一、串口相关参数介绍 1、端口&#xff08;COM口&#xff09; 2、波特率&#xff08;Baud rate&#xff09; 3、起始位 4、停止位&#xff08;StopBits&#xff09; 5、数据位 6、校验位 7、缓存区 二、串口通信助手 三、虚拟串口工具 四、进阶扩展 1、位运算…

InnoDB存储引擎中的锁

文章目录 概要一、需要解决的问题二、共享锁和独占锁1.1 锁定读1.2 表级别的共享锁、独占锁 三、行锁3.1 数据准备3.2 几种常见的行级锁3.3 行锁升级为表锁 概要 关于MySQL涉及到的锁&#xff0c;大致可以总结如下&#xff1a; MyISAM存储引擎在开发过程中几乎很少使用了&…