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

【练习】【双指针】力扣热题100 283. 移动零

题目

给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。

请注意 ,必须在不复制数组的情况下原地对数组进行操作。

示例 1:

输入:

nums = [0,1,0,3,12]

输出:

[1,3,12,0,0]

示例 2:

输入:

nums = [0]
输出:

[0]

来源:力扣热题100 283. 移动零


思路(注意事项)

学习remove()函数的用法


纯代码

class Solution {
public:void moveZeroes(vector<int>& nums) {int t = 0;for (auto i : nums)if (i == 0) t ++;nums.erase(remove (nums.begin(), nums.end(), 0), nums.end());for (int i = 0; i < t; i ++) nums.push_back(0);}
};

题解(加注释)

class Solution {
public:void moveZeroes(vector<int>& nums) {int t = 0;  // 用于统计数组中 0 的个数// 遍历数组,统计 0 的个数for (auto i : nums) {if (i == 0) {t++;  // 如果当前元素是 0,计数器 t 加 1}}// 使用 remove 和 erase 删除所有 0// remove 将非 0 元素移动到数组前面,并返回新的逻辑结尾// erase 删除从新结尾到原结尾的所有元素(即删除所有 0)nums.erase(remove(nums.begin(), nums.end(), 0), nums.end());// 在数组末尾添加 t 个 0for (int i = 0; i < t; i++) {nums.push_back(0);}}
};
http://www.lryc.cn/news/538806.html

相关文章:

  • QT 互斥锁
  • 什么是算法的空间复杂度和时间复杂度,分别怎么衡量。
  • VMware Workstation 17.0 Pro创建虚拟机并安装Ubuntu22.04与ubuntu20.04(双版本同时存在)《包含小问题总结》
  • Windows 10 ARM工控主板CAN总线实时性能测试
  • 如何在不依赖函数调用功能的情况下结合工具与大型语言模型
  • 【Linux AnolisOS】关于Docker的一系列问题。尤其是拉取东西时的网络问题,镜像源问题。
  • 【Elasticsearch】Mapping概述
  • GPT-4o悄然升级:能力与个性双突破,AI竞技场再掀波澜
  • 如何选择合适的超参数来训练Bert和TextCNN模型?
  • C# SpinLock 类 使用详解
  • 【linux】在 Linux 上部署 DeepSeek-r1:32/70b:解决下载中断问题
  • 机器学习所需要的数学知识【01】
  • 4.【线性代数】——矩阵的LU分解
  • 【清晰教程】本地部署DeepSeek-r1模型
  • Spring Cloud工程搭建
  • 使用Redis实现分布式锁,基于原本单体系统进行业务改造
  • 【MediaTek】 T750 openwrt-23.05编 cannot find dependency libexpat for libmesode
  • CHARMM-GUI EnzyDocker: 一个基于网络的用于酶中多个反应状态的蛋白质 - 配体对接的计算平台
  • c# 2025/2/17 周一
  • vite【详解】常用配置 vite.config.js / vite.config.ts
  • 最新智能优化算法: 阿尔法进化(Alpha Evolution,AE)算法求解23个经典函数测试集,MATLAB代码
  • 用于可靠工业通信的5G-TSN集成原型:基于帧复制与消除可靠性的研究
  • HaProxy源码安装(Rocky8)
  • shell脚本备份MySQL数据库和库下表
  • 23. AI-大语言模型
  • Linux /dev/null
  • Unity CommandBuffer绘制粒子系统网格显示
  • Java延时定时刷新Redis缓存
  • 智能硬件定位技术发展趋势
  • 全单模矩阵及其在分支定价算法中的应用