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

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.dtcms.com/a/61438.html

相关文章:

  • 深入解析 Linux 的 traceroute 命令
  • 解决asp.net mvc发布到iis下安全问题
  • 27. Harmonyos Next仿uv-ui 组件NumberBox 步进器组件禁用状态
  • C# 实现 AI SSE (Server-Sent Events)接口方式输出(对接AI模型API)
  • 无公网IP也能远程控制Windows:Linux rdesktop内网穿透实战
  • 使用VS Code remote ssh进行远程开发的笔记
  • UI自动化:Selenium常规的页面元素定位方法
  • golang从入门到做牛马:第十二篇-Go语言数组:数据的“有序集合”
  • LangChain使用总结-第二章
  • webshell一些上传心得
  • 【Java 面试 八股文】计算机网络篇
  • 大模型工具Ollama存在安全风险
  • LeetCode - #225 使用两个队列实现 LIFO 栈
  • Windows中在VSCode/Cursor上通过CMake或launch文件配置CUDA编程环境
  • react使用拖拽,缩放组件,采用react-rnd解决 -完整版
  • gbase8s rss集群通信流程
  • 前端(vue)学习笔记(CLASS 3):生命周期工程化开发入门
  • 物联网中设备异构的问题-甚至可以用工业数据采集器?
  • 深度评测DeepSeek、ChatGPT O1和谷歌Gemini AI应用开发场景 - DeepSeek性能完胜!
  • HTML左右分页2【搬代码】
  • labview实现16进制数据相加取反,取低16位校验
  • 【JavaEE】线程池
  • 人工智能的发展历史
  • OSPF-单区域的配置
  • Python 入
  • (openstack搭建)openstack云平台部署-详细完整教程
  • 【每日学点HarmonyOS Next知识】对话框去掉圆角、数组拼接、自定义对话框依附某个控件、平移动画、页面栈管理
  • (二)企业级监控系统 - ZABBIX 部署
  • STM32-SPI通信协议
  • Visual Studio Code 基本使用指南