当前位置:网站首页>LeetCode·283.移除零·双指针
LeetCode·283.移除零·双指针
2022-08-10 18:29:00 【小迅想变强】
链接:https://leetcode.cn/problems/move-zeroes/solution/by-xun-ge-v-6eoq/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
题目
示例
思路
解题思路
双指针
移动数组中 0 元素,题目给定数组为指针,说明nums指向原始数组的地址,我们修改nums相当于修改了nums指向的地址,所以返回修改之后nums长度即可
对于本题我们定义两个指针,一个指向数组,遍历数组所有元素,当数组元素等于0时,另外一个指针将当前位置之后的所有元素都向前移位,相当于删除操作,最后将后序0补上
双指针优化
在上述解法中,我们需要遍历还需要搬运元素,时间复杂度为O(n^2),我们可以将遍历和搬运简化到一个循环中,定义双指针,当数组元素相同时,慢指针留着当前位置,快指针进行前进,直到不相等时,将快指针指向位置搬运到当前慢指针位置,最后将后序0补上
代码
void moveZeroes(int* nums, int numsSize){
int i, j;
for(i = 0, j = 0; i < numsSize; i++)//遍历数组
{
if(nums[i] == 0)//为0情况
{
continue;
}
nums[j++] = nums[i];
}
while(j < numsSize)//补上0
{
nums[j++] = 0;
}
return;
}
作者:xun-ge-v
链接:https://leetcode.cn/problems/move-zeroes/solution/by-xun-ge-v-6eoq/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。边栏推荐
猜你喜欢

MSE 治理中心重磅升级-流量治理、数据库治理、同 AZ 优先

Toronto Research Chemicals萜烯分析丨(+)-柠檬烯

类型和id对应的两个数组

高手问答第 290 期 —— SaaS产品经理从菜鸟到专家

搭载2.8K 120Hz OLED华硕好屏 无畏Pro15 2022锐龙版屏开得胜
![[Image segmentation] Image segmentation based on cellular automata with matlab code](/img/f7/2fd7dfc0bc59bf3492b304c69bd4c7.png)
[Image segmentation] Image segmentation based on cellular automata with matlab code

JVM内存和垃圾回收-11.执行引擎

【图像分割】基于元胞自动机实现图像分割附matlab代码

想玩转监控神器Prometheus吗?

开发模式对测试的影响
随机推荐
Redis命令---key篇 (超全)
VoLTE基础自学系列 | 3GPP规范解读之Rx接口(上集)
【快应用】如何使用命令打包快应用rpk
StoneDB 文档捉虫活动第一季
RS-485多主机通信的组网方式评估
pyspark columns merge into one row
2022-08-09 Study Notes day32-IO Stream
报告详解影响英特尔10/11/12代酷睿处理器的ÆPIC Leak安全漏洞
flex使用align-content无效
803. 区间合并(贪心)左端点、右端点排序均可
Consul Introduction and Installation
FPGA工程师面试试题集锦91~100
设置iptables规则来保护CS服务器
【FAQ】OpenHarmony与HarmonyOS的有什么区别?
接口测试进阶接口脚本使用—apipost(预/后执行脚本)
开发模式对测试的影响
Toronto Research Chemicals霉菌毒素分析丨T2 四醇
消息队列初见:一起聊聊引入系统mq 之后的问题
set和map使用讲解
瑞吉外卖学习笔记4