当前位置:网站首页>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.
边栏推荐
- explain each field introduction
- Fuzzy query in Map pass-by-value and object pass-by-value
- Selenium在远程中的截图
- Multi-Party Threshold Private Set Intersection with Sublinear Communication-2021:解读
- 【pyqt5】自定义控件 实现能够保持长宽比地缩放子控件
- 生命周期和作用域
- TestNG多个xml进行自动化测试
- 如何记录分析你的炼丹流程—可视化神器Wandb使用笔记【1】
- C#/VB.NET:从 PDF 文档中提取所有表格
- 短视频软件开发,Android开发,使用Kotlin实现WebView
猜你喜欢
随机推荐
SENSORO成长伙伴计划 x 怀柔黑马科技加速实验室丨以品牌力打造To B企业影响力
[Neural Network] This article will take you to easily analyze the neural network (with an example of spoofing your girlfriend)
odoo+物联网
Stop using MySQL online DDL
短视频软件开发,Android开发,使用Kotlin实现WebView
What should I do if the Win11 campus network cannot be connected?Win11 can't connect to campus network solution
Become a Contributor in 30 minutes | How to participate in OpenHarmony's open source contributions in multiple ways?
选择合适的 DevOps 工具,从理解 DevOps 开始
How to query database configuration parameters in GBase 8c, such as datestyle.What function or syntax to use?
[National Programming] "Software Programming - Lecture Video" [Zero Basic Introduction to Practical Application]
驱动上下游高效协同,跨境B2B电商平台如何释放LED产业供应链核心价值?
shell脚本专题(07):文件由cfs到bos
modbus总线模块DAM-8082
SQL function TO_DATE (1)
【木棉花】#夏日挑战赛# 鸿蒙小游戏项目——数独Sudoku(3)
【LeetCode】Day109-the longest palindrome string
无需破解,官网安装Visual Studio 2013社区版
Win11校园网无法连接怎么办?Win11连接不到校园网的解决方法
483-82 (23, 239, 450, 113)
ExcelPatternTool: Excel form-database mutual import tool









