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

力扣双指针算法题目:移动零

1.题目

. - 力扣(LeetCode)

2.思路解析

这个题目的思路和“使用递归排序快速排序解决数组的排序问题”相同

class solution
{
public:void QuickSort(vector<int>& nums, int left, int right){if (left > right) return;int key = left;int pre = left;int cur = left + 1;while (cur <= right){if (nums[cur] < nums[key]){pre++;swap(nums[pre], nums[cur]);}cur++;}swap(nums[key], nums[pre]);key = pre;QuickSort(nums, left, key - 1);QuickSort(nums, key + 1, right);}
};

使用双指针des和cur

指针des和cur向右遍历

在非零区段中,des和cur一定是紧挨着的且cur一定比des快(cur在des右边)

cur遇到零之后,des就不走,但是cur要接着走,此时cur指向零,des指向cur之前一个非0元素

在下一个循环中,cur不指向0,cur和des同时向前走一格,此时des指向零,cur不指向零

3.代码

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

http://www.lryc.cn/news/391272.html

相关文章:

  • day60---面试专题(微服务面试题-参考回答)
  • laravel+phpoffice+easyexcel实现导入
  • Spring Boot集成多数据源的最佳实践
  • Java项目:基于SSM框架实现的班主任助理管理系统【ssm+B/S架构+源码+数据库+开题报告+毕业论文】
  • 数据在内存中的存储方式
  • Selenium 监视数据收发
  • 基于 STM32 的智能睡眠呼吸监测系统设计
  • Spring的事务管理、AOP实现底层
  • 基于SpringBoot的篮球竞赛预约平台
  • 学生用小台灯什么牌子的好?列举出几款学生用台灯推荐
  • 软件测试面试题:项目中的MQ是如何测试的?
  • Python爬取国家医保平台公开数据
  • B站大课堂-自动化精品视频(个人存档)
  • C++_STL---priority_queue
  • 可移动天线辅助宽带通信的性能分析和优化
  • h5兼容table ,如何实现h5在app内使用h5渲染table表格而且实现横屏预览?
  • 在windows上安装objection
  • 人脸特征68点识别 C++
  • 部署LVS-DR 群集
  • nginx的正向代理和反向代理
  • 米国政府呼吁抛弃 C 和 C++
  • failed to lazily initialize a collection of role,解决Hibernate查询报错
  • Promethuse-监控 Etcd
  • linux桌面运维---第四天
  • 视频网关的作用
  • css+js实现导航栏色块跟随滑动+点击后增加样式
  • AudioLM音频生成模型:技术革新与应用前景
  • 数据结构教材关于C/C++的研究
  • 【刷题笔记(编程题)05】另类加法、走方格的方案数、井字棋、密码强度等级
  • 如何检查购买的Facebook账号优劣?