当前位置:网站首页>Brush the topic of mobile zero power button
Brush the topic of mobile zero power button
2022-08-03 19:02:00 【Poetic term for boat sails】
力扣刷题之移动零 这是力扣题中的第283题.
题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序. 请注意 ,必须在不复制数组的情况下原地对数组进行操作.
题目要求将数组中的零移动到数组后面.并且只能在原数组上操作,不可以复制,不可以打乱原来数组元素的顺序.
于是对于中元素的移动的话,如果脑子转动不是很灵光的话,就建议去自己画一个图去试着操作,看看怎么去移动.
你看这些打乱的零怎么移动到后面
将零移动到后面,那就需要将非零元素移动到前面.
一种想法,我们可以用两个指针,然后开始同时初始化指向数组的头部.
然后怎么移动呢?黄色的指针开始移动,移动到3,它不是零,我们将它替换掉白色位置上的0的值.
继续,到这里的时候,我们的黄色指针指向零,我们当然是不会将零前移动的.
这里没有发生移动,白色的指针不要动,黄色的继续移动. 移动到4的时候,然后黄色指向处的数替换白色执行处的值.
然后两个指针继续移动,此时黄色处的值再次替换白色指针处的值,黄色指针到达终点
然后我们白色指针继续移动到终点,并对后面的索引处的值赋0.
这样就移动好了.
我们按照这种逻辑来编写代码
class Solution {
public void moveZeroes(int[] nums) {
int pre01 =0;
for (int pre02 = 0; pre02 < nums.length; pre02++) {
if (nums[pre02]!=0)
{
nums[pre01++]=nums[pre02];
}
}
for (int i = pre01; i < nums.length; i++) {
nums[i]=0;
}
}
}还有一种方法,在思路上有所区别.这次我们还是初始化两个指针. 只不过这次交换的时候,我们是这样做的.
我们在比较的时候就直接交换.
然后移动,这里两个都是零,不交换.黄色的移动,白色的不变
下一步交换
继续
仔细比较的话,这两种方法存在这区别.我们交换的模式不一样,指针移动到的位置不一样. 来看代码实现.
int pre01 =0;
for (int pre02 = 0; pre02 < nums.length; pre02++) {
if(nums[pre01]==0&&nums[pre02]!=0)
{
int n= nums[pre02];
nums[pre02]=nums[pre01];
nums[pre01++] =n;
}
else if (nums[pre01]!=0)
{
pre01++;
}
}这样的执行效率不如我们上面的方法高,但是上一种似乎更是像钻空子.
边栏推荐
- Confused!Ali was abused on the one hand, but was fortunate to be promoted to Huawei's technology, and successfully got the offer, with an annual salary of 40w
- 【计网】二、物理层
- BinaryIndexedTrees树状数组
- Redis:哨兵
- MD5是对称加密还是非对称加密,有什么优缺点
- 盲僧发现了华点——教你如何使用API接口获取数据
- MPLS的简单应用于实验
- 2022/08/02------丑数
- 安装porterLB
- pytest接口自动化测试框架 | 基于Pytest的Web UI自动化测试框架介绍
猜你喜欢

Install porterLB

丙二醇二乙酸酯(Propylene Glycol Diacetate)
![选出表中的中位数记录[构造左右边界 || 问题转换]](/img/02/8d8e515c994c8a1a364f1e299d73f7.png)
选出表中的中位数记录[构造左右边界 || 问题转换]

MySQL详细学习教程(建议收藏)

87. (Home of cesium) cesium heat map (topography)

idea——同一项目开启多个实例(不同端口)

要想成为黑客,离不开这十大基础知识

分享即时通讯开发之WebSocket:概念、原理、易错常识、动手实践
![[Azure Event Hub] Create Event Hub Consume Client + Custom Event Position with Azure AD Authentication](/img/fe/db506853be08398f815f4e36beee76.png)
[Azure Event Hub] Create Event Hub Consume Client + Custom Event Position with Azure AD Authentication

字节跳动三面拿offer:网络+IO+redis+JVM+GC+红黑树+数据结构,助你快速进大厂!!
随机推荐
阿里巴巴政委体系-第八章、阿里政委工作方法论
OSError: [WinError 123] 文件名、目录名或卷标语法不正确
go语言实现导出string字符串到文件中
[Dataset][VOC] Rat dataset voc format 3001 sheets
基于移动GIS的环保生态管理系统
Don't look down upon the WebSocket!Long connection, stateful, two-way, full-duplex king is Fried
Alibaba senior experts create a learning architecture from scratch, including Alibaba's internal technology stack PPT, PFD actual combat
选出表中的中位数记录[构造左右边界 || 问题转换]
不要小看 WebSocket!长连接、有状态、双向、全双工都是王炸技能
fatal error: jni.h: No such file or directory
LineSegmentTree线段树
ctfshow php特性
剑指Offer 56.数组中数字出现的次数
开发即时通讯到底需要什么样的技术,需要多久的时间
Chrome浏览器开发新截图工具,安全浏览器截图方法
Mkke:为什么无法从Oracle 11g或12c升级到Oracle 23c?
MySQL 啥时候用表锁,啥时候用行锁?这些你都应该知道吧
2022年最新的Android面试大厂必考174题(附带详细答案)
【ORACLE】什么时候ROWNUM等于0和ROWNUM小于0,两个条件不等价?
PHP基础笔记-NO.1