当前位置: 首页 > news >正文

【OJ刷题】双指针问题

这里是阿川的博客,祝您变得更强

✨ 个人主页:在线OJ的阿川
💖文章专栏:OJ刷题入门到进阶
🌏代码仓库:


写在开头

现在您看到的是我的结论或想法但在这背后凝结了大量的思考、经验和讨论


在这里插入图片描述

在这里插入图片描述

目录

  • 1.题目介绍
  • 2.题目拆解:
  • 3.具体详情
  • 4.具体代码


1.题目介绍

难度:易
题目练习:移动零
题目信息:给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。请注意 ,必须在不复制数组的情况下原地对数组进行操作。


2.题目拆解:

本质上:是数组划分、数组分块问题
特点是:在制定的标准下,把数组划分成若干个区间
解决方法:双指针算法(利用数组下标来充当指针)


3.具体详情

两个指针作用:

cur:从左往右扫描数组,遍历数组
dest:已处理的区间内,非零元素的最后一个位置(即分界线)
具体如图1所示:
在这里插入图片描述

图1

三个区间:

具体如图2所示:
在这里插入图片描述

图2

如何做到:
cur从前往后遍历的过程中:

1. 遇到零元素: cur++
2.遇到非零元素: swap(dest + 1, cur);
dest++,cur++;


4.具体代码

class Solution {
public:void moveZeroes(vector<int>& nums) {for(int step = -1, cur = 0; cur < nums.size(); cur++)if(nums[cur])swap(nums[++step], nums[cur]); }
};

好的,到此为止啦,祝您变得更强
在这里插入图片描述

在这里插入图片描述

道阻且长 行则将至
个人主页:在线OJ的阿川大佬的支持和鼓励,将是我成长路上最大的动力 在这里插入图片描述
http://www.lryc.cn/news/435256.html

相关文章:

  • 基于SpringBoot+Vue+MySQL的校园食堂订餐
  • uniapp业务实现
  • Windows和Mac命令窗快速打开文件夹
  • 智能制造云平台---附源码79117
  • 降本、创新、合作,谁才是连接器行业破除内卷的关键词?
  • 可能一拆为二,英特尔为何走到今天这一步?
  • 了解Redis集群概念,集群如何选举主节点
  • Ozon跨境商家提升销量的关键:测评补单策略与必备条件
  • 缺乏大模型经验,还有机会吗?
  • 如何阅读李冬梅老师《数据结构》
  • Python————正则表达式
  • 将你的github仓库设置为web代理
  • CTFHub技能树-Git泄漏-Index
  • vb.net发送邮件:如何高效地实现邮件发送?
  • mycat双主高可用架构部署-水评分表-范围分片配置
  • 开发模型例题
  • 一文搞懂 TS中 函数、枚举、别名 | TypeScript 入门指南 06
  • 基于JAVA+SpringBoot+Vue的前后端分离的图书馆管理系统
  • 基于SpringBoot+Vue的鲜花销售/鲜花商城/花店管理系统
  • 信号发生器在扫描模式下输出正弦波信号,需要注意设置哪些参数
  • xss-labs-master通关教程
  • 断点回归模型
  • app广告推送常见业务术语
  • 2024/9/11 小型PLC典型应用2:伺服canlink配置、指令、应用
  • 在IDEA中如何创建web项目?——不使用Archetype
  • 基于C#+SQL Server2008 开发三层架构(CS界面)图书管理系统
  • AIGC简化文件管理:Python自动重命名Word和PDF文件
  • 产线工控安全之防勒索病毒杀手锏
  • 超详细超实用!!!网站开发页面适配360浏览器兼容模式
  • 【Redis】主从复制 - 源码