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

91.移动零(力扣)

 问题描述

代码解决以及思想 

class Solution {
public:void moveZeroes(vector<int>& nums) {int left = 0;   // 左指针,用于指向当前非零元素应该放置的位置int right = 0;  // 右指针,用于遍历数组int len = nums.size();  // 数组长度while (right < len) {// 如果右指针指向的元素不是零if (nums[right] != 0) {// 交换左指针和右指针指向的元素,将非零元素移动到左指针的位置swap(nums[left], nums[right]);// 移动左指针,为下一个非零元素找到位置left++;}// 移动右指针,继续遍历数组right++;}}
};

上述代码的思想是使用双指针法,通过一个左指针(left)和一个右指针(right)协同工作,将数组中的所有零元素移动到数组的末尾,同时保持其他非零元素的相对顺序。以下是代码的主要思想:

  1. 初始化左指针 left 和右指针 right 为数组的起始位置。

  2. 右指针 right 用于遍历整个数组。

  3. 如果右指针指向的元素不是零(nums[right] != 0),表示找到了一个非零元素。

  4. 执行交换操作:交换左指针 left 和右指针 right 指向的元素。这样做的效果是将非零元素移动到左指针的位置。

  5. 移动左指针 left,以便为下一个非零元素找到位置。

  6. 移动右指针 right 继续遍历数组。

  7. 重复上述步骤,直到右指针 right 遍历完整个数组。

 

写在最后:以上就是本篇文章的内容了,感谢你的阅读。如果感到有所收获的话可以给博主点一个赞哦。如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~  

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

相关文章:

  • PatchMatchNet笔记
  • 实时人眼追踪、内置3D引擎,联想ThinkVision裸眼3D显示器创新四大应用场景
  • SELinux零知识学习十四、SELinux策略语言之客体类别和许可(8)
  • Unity——URP相机详解
  • CRUD-SQL
  • 【C语言 | 数组】C语言数组详解(经典,超详细)
  • 第三十三节——组合式API生命周期
  • 【Linux】Alibaba Cloud Linux 3 安装 PHP8.1
  • 【容器化】Kubernetes(k8s)
  • stm32 HSUSB
  • C# String.Trim 方法
  • <Linux>(极简关键、省时省力)《Linux操作系统原理分析之Linux 进程管理 4》(8)
  • RT-Thread STM32F407 PWM
  • idea中把spring boot项目打成jar包
  • levelDB之基础数据结构-Slice
  • 上位机模块之通用重写相机类
  • 机器人导航+OPENCV透视变换示例代码
  • KofamScan-KEGG官方推荐的使用系同源和隐马尔可夫模型进行KO注释
  • 代码随想录算法训练营第五十五天丨 动态规划part16
  • 【Linux】kernel与应用消息队列的一种设计
  • 我们常说的网络资产,具体是如何定义的?
  • WPF中可冻结对象
  • 【人工智能实验】A*算法求解8数码问题 golang
  • Kafka学习笔记(二)
  • Typora for Mac:打造全新文本编辑体验
  • TikTok与媒体素养:如何辨别虚假信息?
  • Spring Boot 中使用 ResourceLoader 加载资源的完整示例
  • 1688往微信小程序自营商城铺货商品采集API接口
  • QStatusBar开发详解
  • 后端接口性能优化分析-程序结构优化