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

移动零,leetCode热题100,C++实现

题目来源:leetCode

283. 移动零 - 力扣(LeetCode)

解法

class Solution {
public:void moveZeroes(vector<int>& nums) {int n = nums.size(), left = 0, right = 0;while (right < n) {if (nums[right]) {swap(nums[left], nums[right]);left++;}right++;}}
};

双指针法,right遍历数组,遇到非0则与left进行交换

举例 [ 0,1,2,0,3],起始都指向第一个0,right后移,指向下标1,此时交换0和1,数组变成[1,0,2,0,3]

然后left++,left指向下标1,right++,指向下标2,再次交换,数组变成[1,2,0,0,3]

然后left++,left指向下标2,right++,指向3,此时是0,right++,指向下标4,也就是指向3,交换后变成[1,2,3,0,0]

另一种情况[1,2,3,0,0,4],起始时,right指向1,为非0,则交换,也就是1和1交换,不变,然后left++,right++,都指向2,再次交换,以此类推,这种情况会自己和自己交换,所以不影响

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

相关文章:

  • SpringCloud Alibaba Sentinel 流量治理、熔断限流(四)
  • 【源码】智慧工地系统:智能化施工现场的全新管理方案
  • 第十七章 ESP32S3 SW_PWM 实验
  • 深入解析Nginx常见模块2
  • web渗透之RCE漏洞
  • 针对 “TCP 会话维持与身份验证” 的攻击
  • (二)设计模式(Command)
  • SQL Server 临时表合并与数量汇总的实现方法
  • 大模型不听话?试试提示词微调
  • “可选功能“中找不到 OpenSSH, PowerShell 命令行来安装OpenSSH
  • windows 谷歌浏览器一直提示无法更新Chrome弹窗问题彻底解决
  • Learning Curve|学习曲线
  • 数据库攻略:“CMU 15-445”Project0:C++ Primer(2024 Fall)
  • 【开题答辩全过程】以 “与我同行”中华传统历史数字化平台的设计和分析-------为例,包含答辩的问题和答案
  • Linux软件定时器回顾
  • 本地部署开源媒体服务器 Komga 并实现外部访问( Windows 版本)
  • 容器存储驱动升级:美国VPS文件系统优化全指南
  • 上海我店模式的多维度探究
  • 对于STM32工程模板
  • CRM、ERP、HRP系统有啥区别?
  • 250830-Docker从Rootless到Rootful的Gitlab镜像迁移
  • 深刻理解软硬件链接
  • ubuntu24.04 qt6安装
  • 学习游戏制作记录(各种优化)
  • 复制VMware虚拟机后的网络配置
  • leetcode算法刷题的第二十二天
  • 论《运动战》
  • Linux查看有线网卡和无线网卡详解
  • UNet改进(36):融合FSATFusion的医学图像分割
  • Vue基础知识-单向绑定v-bind、双向绑定v-model、插值语法{{}}、Object.defineProperty实现数据代理