当前位置:网站首页>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)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
边栏推荐
猜你喜欢
VoLTE基础自学系列 | 3GPP规范解读之Rx接口(上集)
破解校园数字安全难点,联想推出智慧教育安全体系
友邦人寿可观测体系设计与落地
【2015】【论文笔记】等离子光混合器THz辐射的光谱——
[Image dehazing] Image dehazing based on color attenuation prior with matlab code
MySQL 查询出重复出现两次以上的数据 - having
【FAQ】HarmonyOS ETS如何给组件设置边框
Toronto Research Chemicals霉菌毒素分析丨T2 四醇
从企业的视角来看,数据中台到底意味着什么?
多线程与高并发(五)—— 源码解析 ReentrantLock
随机推荐
宝塔部署flask项目
AIRIOT答疑第8期|AIRIOT的金字塔服务体系是如何搞定客户的?
剑指 Offer 27. 二叉树的镜像(翻转二叉树)
905. 区间选点(贪心)
企业如何通过北森HR SaaS 自动化管理员工账号生命周期
什么是企业知识库?有什么作用?如何搭建?
const的自己理解
StoneDB Document Bug Hunting Season 1
面试题 04.12. 求和路径-dfs+辅助数组法
[Image segmentation] Image segmentation based on cellular automata with matlab code
FPGA:生成固化文件(将代码固化到板子上面)
【数据存储精讲】整型和浮点型有什么区别?为什么会精度丢失?
set和map使用讲解
多种深度模型实现手写字母MNIST的识别(CNN,RNN,DNN,逻辑回归,CRNN,LSTM/Bi-LSTM,GRU/Bi-GRU)
设置iptables规则来保护CS服务器
Interface test advanced interface script using -apipost (pre/post execution script)
【2011】【论文笔记】用THz-TDS观察水树——
「POJ 3666」Making the Grade 题解(两种做法)
c语言进阶篇:柔性数组
阿里云贾朝辉:云 XR 平台支持彼真科技呈现国风科幻虚拟演唱会