当前位置:网站首页>Mobile Zero of Likou Brush Questions
Mobile Zero of Likou Brush Questions
2022-08-01 19:06:00 【Lanzhou Qianfan】
The mobile zero of the force button brush question
This is the number one in the quiz283题.
题目
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序.
请注意 ,必须在不复制数组的情况下原地对数组进行操作.

The question asks to move the zeros in the array to the back of the array.And can only operate on the original array,不可以复制,You cannot shuffle the order of the original array elements.
So for the movement of the elements,If the brain rotation is not very smart,It is recommended to draw a picture yourself to try it out,See how to move.
You see how these scrambled zeros move to the back

Move zero to the back,Then you need to move the non-zero elements to the front.
一种想法,我们可以用两个指针,Then start to initialize the head of the array pointing to the same time.
And how to move it?The yellow pointer starts to move,移动到3,它不是零,We replace it with the white one0的值.
继续,到这里的时候,Our yellow pointer points to zero,We certainly don't move forward zero.
There is no movement here,Do not move the white pointer,The yellow ones continue to move.
移动到4的时候,Then the number at the yellow point replaces the value at the white execution.
然后两个指针继续移动,The value at the yellow pointer now replaces the value at the white pointer again,The yellow pointer reaches the end
Then we continue to move the white pointer to the end point,and assigns the value at the following index0.
This moves it.
We write code according to this logic
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;
}
}
}

还有一种方法,There is a difference in thinking.This time we initialize two pointers.
Only this time around,我们是这样做的.

We exchange directly when comparing.
然后移动,Both are zeros here,不交换.yellow move,White unchanged
Swap next
继续
Compare carefully,There is a difference between the two methods.Our exchange patterns are different,The position to which the pointer moves is different.
来看代码实现.
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++;
}
}
This execution efficiency is not as high as our above method,But the last one seems to be more like a loophole.
边栏推荐
- cf:D. Magical Array【数学直觉 + 前缀和的和】
- LeetCode 0152. 乘积最大子数组:dp + 原地滚动
- 【蓝桥杯选拔赛真题47】Scratch潜艇游戏 少儿编程scratch蓝桥杯选拔赛真题讲解
- Screenshot of Selenium in Remote
- 在Map传值与对象传值中模糊查询
- Use of message template placeholders
- 通配符 SSL/TLS 证书
- Summer vacation first week wrap-up blog
- 硬件大熊原创合集(2022/07更新)
- #yyds dry goods inventory# Interview must brush TOP101: the last k nodes in the linked list
猜你喜欢
随机推荐
Zabbix6.0 DingTalk robot alarm
重保特辑|拦截99%恶意流量,揭秘WAF攻防演练最佳实践
Every calculation, & say what mean
[National Programming] "Software Programming - Lecture Video" [Zero Basic Introduction to Practical Application]
明尼苏达大学团队结合高通量实验与机器学习,实现有效可预测的特定位点重组过程,可调节基因编辑速度
Multi-Party Threshold Private Set Intersection with Sublinear Communication-2021: Interpretation
kubernetes-部署nfs存储类
随时随地写代码--基于Code-server部署自己的云开发环境
短视频软件开发,Android开发,使用Kotlin实现WebView
cf:D. Magical Array【数学直觉 + 前缀和的和】
将ENS域名转化为音乐需要几步?
shell脚本专题(07):文件由cfs到bos
Screen: GFF, OGS, Oncell, Incell of full lamination process
安装GBase 8c数据库的时候,报错显示“Resource:gbase8c already in use”,这怎么处理呢?
Keras深度学习实战——交通标志识别
【LeetCode】Day109-the longest palindrome string
LeetCode 0152. Product Maximum Subarray: dp + Roll in Place
文库网站建设源码分享
如何看待腾讯云数据库负责人林晓斌借了一个亿炒股?
mysql函数的作用有哪些








