当前位置:网站首页>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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。边栏推荐
猜你喜欢

stm32中的CAN通讯列表模式配置解析与源码

搭载2.8K 120Hz OLED华硕好屏 无畏Pro15 2022锐龙版屏开得胜

如何通过JMobile软件实现虹科物联网HMI/网关的报警功能?

CSV(Comma-Separate-Values)逗号分隔值文件

企业即时通讯是什么?可以应用在哪些场景?

罗克韦尔Rockwell Automation EDI 项目

【FAQ】HarmonyOS ETS如何给组件设置边框

redis.exceptions.DataError: Invalid input of type: ‘dict‘. Convert to a byte, string or number first

NPDP|传统行业产品经理如何进行能力提升?

2022-08-09 Study Notes day32-IO Stream
随机推荐
让mixin为项目开发助力【及递归优化新尝试】
PG中的Index-Only Scans解密
2022-08-09 学习笔记 day32-IO流
Flexsim 发生器设置label和颜色
企业即时通讯是什么?可以应用在哪些场景?
Redis命令---key篇 (超全)
go语言的性能基准测试、性能优化测试和性能调优
【OpenCV】-物体的凸包
120Hz OLED拒绝“烧屏”!华硕无双全能轻薄本
StoneDB Document Bug Hunting Season 1
智能出价策略如何影响广告效果?
FPGA工程师面试试题集锦81~90
请问下在datastream中用flinkcdc怎么设置jdbc的参数useSSL=false呀
#yyds干货盘点# 面试必刷TOP101:二分查找-I
【ARK UI】HarmonyOS ETS的引导页的实现
谈谈宝石方块游戏中的设计
redis.exceptions.DataError: Invalid input of type: ‘dict‘. Convert to a byte, string or number first
【测试】黑盒测试用例设计方法
flex&bison系列第一章:flex Hello World
入门:人脸专集2 | 人脸关键点检测汇总(文末有相关文章链接)