当前位置:网站首页>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++;
}
}
这样的执行效率不如我们上面的方法高,但是上一种似乎更是像钻空子.
边栏推荐
猜你喜欢
智能合约安全——delegatecall (2)
使用安全浏览器将网页保存为pdf的方法步骤
CC2530_ZigBee+华为云IOT:设计一套属于自己的冷链采集系统
要想成为黑客,离不开这十大基础知识
BinomialTree 二叉树
U-Net生物医学图像分割讲解(Convolutional Networks for BiomedicalImage Segmentation)
MySQL如何一劳永逸的永久支持输入中文
微信小程序分享功能
【HCIP】MPLS实验
Online monitoring of UPS power supply and operating environment in the computer room, the solution is here
随机推荐
MVC vs MVP
ADS 2023 下载链接
Protobuf Grpc使用异常 类型有未导出的方法,并且是在不同的软件包中定义
excel写入不完全sheet.append方法(openpyxl)
金鱼哥RHCA回忆录:CL210管理计算资源--管理计算节点+章节实验
pytest接口自动化测试框架 | 基于Pytest的Web UI自动化测试框架介绍
go语言实现导出string字符串到文件中
warnings.warn(“Title is more than 31 characters. Some applications may not be able to read the file
机器学习的方法总结
2022年最新的Android面试大厂必考174题(附带详细答案)
Don't look down upon the WebSocket!Long connection, stateful, two-way, full-duplex king is Fried
阿里巴巴政委体系-第六章、阿里政委体系运作
[Azure Event Hub] Create Event Hub Consume Client + Custom Event Position with Azure AD Authentication
爬虫之selenium
设备树基本原理与操作方法
关于2022年度深圳市技术攻关重大项目的申报通知
2022/08/02------丑数
ScrollView嵌套RV,滑动有阻力不顺滑怎么办?
MySQL如何一劳永逸的永久支持输入中文
87. (Home of cesium) cesium heat map (topography)