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

移动零_优选算法(C++)

网页直达:

https://leetcode.cn/problems/move-zeroes

题目分析:

1.将0放到后面,然后不改变非零数字的相对位置.

双指针算法:利用数组下标来充当指针.

cur指针:从左往右扫描数组,遍历数组

dest:已处理的区间,非零元素的最后一个位置.

分成三个区间:

[ 0 ,dest]     [ dest ,cur ]   [ cur , n-1]

[ 0 ,dest] :放非零元素

 [ dest ,cur ] :放零元素

 [ cur , n-1]:未遍历的数据

cur在向后面遍历的时候

1.遇到0元素,不管,cur++.

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

分析到这里其实已经讲完了.我们来回忆一下相似的题目,快速排序

快速排序:

基本思想其实和双指针法差不多:tmp是中间值

[0 ,tmp]     [tmp ,n-1]

[0 ,tmp]:是小于tmp的值

[tmp ,n-1]:是大于tmp的值

代码实现:

无注释:

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

注释:

class Solution {
public:void moveZeroes(vector<int>& nums) {for(int cur=0,dest=-1;cur<nums.size();cur++ )//cur遍历数组{if(nums[cur]!=0)//如果为零就在[0,dset]里面{swap(nums[++dest],nums[cur]);//交换}}}
};

http://www.dtcms.com/a/388724.html

相关文章:

  • 【字节跳动】LLM大模型算法面试题:llama 输入句子长度理论上可以无限长吗
  • 基于STM32单片机的超声波跟随婴儿车设计
  • 深入理解 Linux 系统调用
  • 工厂模式VS抽象工厂模式
  • Python面试题及详细答案150道(136-150) -- 网络编程及常见问题篇
  • type 对比 interface【前端TS】
  • qt使用camke时,采用vcpkg工具链设置VTK的qt模块QVTKOpenGLNativeWidget
  • 【Linux网络编程】传输层协议-----TCP协议
  • 英莱科技焊缝跟踪系统亮相德国埃森焊接展,激光视觉点亮世界舞台
  • 【提示工程】向AI发出高质量的指令(实战篇)
  • LG P5127 子异和 Solution
  • 从位运算角度重新理解树状数组
  • 从零开始构建Kubernetes Operator:一个完整的深度学习训练任务管理方案
  • 关于CAS的ABA问题的原因以及解决?
  • C语言(长期更新)第16讲:字符和字符串函数
  • c过渡c++应知应会(2)
  • 分析下kernel6.6中如何获取下一次的cpu频率
  • 22.4 单卡训练T5-Large!DeepSpeed ZeRO-2让12GB显存hold住770M参数模型
  • 《Linux 常用 C 函数参考手册》更新 2.0 版本啦!适合 C 语言开发者、Linux 系统程序员、嵌入式开发者使用
  • str.maketrans() 方法
  • 漫谈:C语言 C++ 声明和定义的区别是什么
  • Java企业级开发中的对象类型深度解析:PO、Entity、BO、DTO、VO、POJO 使用场景、功能介绍、是否必须、总结对比
  • 从弱 AI 到通用人工智能(AGI):核心技术壁垒与人类社会的适配挑战
  • 数据序列化语言---YAML
  • Dify: Step2 Dify模型配置 Dify, Docker,ollama是什么关系
  • SSH连接排故排查
  • 【DMA】DMA架构解析
  • STM32HAL库-移植mbedtls开源库示例(一)
  • MAP的具体实现
  • 排序不等式的推广,对于任意两个数列的推广