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

1.1 双指针专题:移动零(easy)

一、题目链接

283. 移动零

二、题目描述

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

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

⽰例 1:

        输⼊: nums = [0,1,0,3,12]

        输出: [1,3,12,0,0]

⽰例 2:

        输⼊: nums = [0]

        输出: [0]

三、解法

思路

双指针 dest 和 cur 将数组划分为三个区间:

  • [0,dest]:全部非零元素
  • [dest + 1,cur - 1]:全部零元素
  • [cur,nums.size()-1]:未处理区间

流程

四、代码

#include <vector>
class Solution 
{
public:
    void moveZeroes(vector<int>& nums) 
    {
      int cur = 0, dest = -1;
      while(cur < nums.size())
      {
        if(nums[cur])
        {
            swap(nums[++dest],nums[cur]);
        }
        ++cur;
      }
        
    }
};

运行结果


http://www.kler.cn/a/579970.html

相关文章:

  • 香港服务器深度测评:AWS vs 阿里云 vs GCP 技术选型指南
  • 20天 - TCP 和 UDP 有什么区别?说说 TCP 的三次握手?TCP 是用来解决什么问题?
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_cycle_modules
  • C++设计模式中的单例模式:从原理、应用、实践指南与常见问题和解决方案深度解析
  • Node.js和Vue CLI 安装指南(Windows 系统)
  • Python 实现非对称加密的 A 端和 B 端软件的详细步骤及代码示例
  • 电脑维修保养售后服务跟踪软件到哪里下载,佳易王电脑保养维护记录查询可导入图片管理系统操作教程
  • 零成本短视频爆款制造手册
  • gdb调试以及常用相关工具(hexdump\objdump等)
  • U1.【UVA】块问题-The Blocks Problem(补充了pair的使用)
  • c语言笔记 内存管理之栈内存
  • GPT-4 Turbo的重大升级与深远影响
  • Java反射与动态代理:框架设计的基石
  • Android Retrofit 框架注解定义与解析模块深度剖析(一)
  • 利用LLMs准确预测旋转机械(如轴承)的剩余使用寿命(RUL)
  • 【开源】OpenAL、OpenCL、OpenCV 和 OpenGL
  • Git Fast-forward 合并详解:原理、场景与最佳实践
  • 安全保障:渲染101如何守护用户数据?
  • BT-Basic函数之首字母C
  • 数据结构第六节:二叉搜索树(BST)的基本操作与实现