当前位置: 首页 > 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 个 0
        for (int i = 0; i < t; i++) {
            nums.push_back(0);
        }
    }
};

相关文章:

  • 安全筑基,智能赋能:BeeWorks IM引领企业协同新纪元
  • 回文数:简单问题中的多种优化思路
  • 蓝桥杯篇---IAP15F2K61S2定时器
  • 开业盛典活动策划方案拆解
  • Django中数据库迁移命令
  • pyqt写一个待办程序
  • 惠普HP Color LaserJet CP1215/1210彩色打印机打印校准方法
  • 比较5点结构的减一对称性
  • KT1025A蓝牙音频芯片歌名歌词ID3显示芯片的功能说明
  • 手动埋点的demo
  • 双击打开、输入内容即可生成二维码的便捷工具
  • 往es中写入一条数据的,请求流程
  • 使用MyBatis生成器
  • ZOJ 1012 Mainframe
  • 关于XML映射器的基本问题
  • 【线性代数】2矩阵
  • DC-8靶机渗透测试全过程
  • Unity学习part2
  • python从入门到进去
  • [高等数学] 分部积分法
  • 习近平出席俄罗斯纪念苏联伟大卫国战争胜利80周年庆典
  • 浙江一民企拍地后遭政府两次违约,“民告官”三年又提起民事诉讼
  • 七大交响乐团“神仙斗法”,时代交响在上海奏出时代新声
  • “80后”计算机专家唐金辉已任南京林业大学副校长
  • 如此城市|上海老邬:《爱情神话》就是我生活的一部分
  • 洗衣机无法有效杀菌