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

LeetCode 283 - 移动零

思路

使用双指针法,一次遍历完成原地修改。

  1. 慢指针 slow:指向下一个非零元素应该被放置的位置。
  2. 快指针 fast:遍历整个数组,寻找非零元素。

fast 遇到非零数时,将其值赋给 slow 指向的位置,然后 slow 前进。fast 始终前进。

遍历结束后,slow 指针左侧(不含 slow)都是排好序的非零元素。最后,将 slow 指针及之后的所有位置填充为 0 即可。

C++ 代码实现
class Solution {
public:void moveZeroes(vector<int>& nums) {int slow = 0;// 将所有非零元素移动到数组前面for (int fast = 0; fast < nums.size(); ++fast) {if (nums[fast] != 0) {nums[slow++] = nums[fast];}}// 将 slow 及其之后的位置填充为 0while (slow < nums.size()) {nums[slow++] = 0;}}
};
复杂度
  • 时间复杂度: O(n)fast 指针遍历数组一次。
  • 空间复杂度: O(1),原地操作,未使用额外空间。

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

相关文章:

  • 【面试】软件测试面试题
  • mangoDB面试题及详细答案 117道(026-050)
  • Netty中InternalThreadLocalMap的作用
  • 【C++算法】72.队列+宽搜_二叉树的最大宽度
  • React函数组件的“生活管家“——useEffect Hook详解
  • 【Linux】初识make/makefile
  • sqLite 数据库 (2):如何复制一张表,事务,聚合函数,分组加过滤,列约束,多表查询,视图,触发器与日志管理,创建索引
  • 【MySQL基础篇】:MySQL表的约束常用类型以及实战示例
  • 15-C语言:第15~16天笔记
  • dubbo应用之3.0新特性(响应式编程)(2)
  • 《剑指offer》-算法篇-位运算
  • window weblogic 解锁
  • Object.freeze() 深度解析:不可变性的实现与实战指南
  • 第4章唯一ID生成器——4.5 美团点评开源方案Leaf
  • JVM易混淆名称
  • 【24】C# 窗体应用WinForm ——日历MonthCalendar属性、方法、实例应用
  • 在依赖关系正确的情况下,执行 mvn install 提示找不到软件包
  • 测试自动化不踩坑:4 策略告别 “为自动化而自动化”
  • DPDK PMD 深度解析:高性能网络的核心引擎
  • 使用LangChain构建法庭预定智能体:结合vLLM部署的Qwen3-32B模型
  • 疯狂星期四文案网第23天运营日记
  • 基于Matlab图像处理的静态雨滴去除与质量评估系统
  • 数学建模算法-day[14]
  • LeetCode 刷题【19. 删除链表的倒数第 N 个结点、20. 有效的括号、21. 合并两个有序链表】
  • 面试刷题平台项目总结
  • 用命令查看Android设备的 Linux 内核版本,了解其对应的硬件支持各种特性
  • Git命令保姆级教程
  • 如何进行项目复盘?核心要点分析
  • AI产品经理手册(Ch3-5)AI Product Manager‘s Handbook学习笔记
  • linux命令tail的实际应用