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

283. 移动零


文章目录

  • 1.题目
  • 2.思路
  • 3.代码


1.题目

283. 移动零

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

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

示例 1:

输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]
输出: [0]

2.思路

思想:定义两个指针cur=0,pre=-1,cur从0开始遍历数组

遇到0,++cur,遇到非零,++pre,然后交换nums[cur]和nums[pre],之后++cur

例如 nums = [0,1,0,3,12],一开始pre指向-1,cur指向0,然后cur遇到0直接向后移动,cur变为1,然后cur遇到非零,此时将pre++后pre为0,之后交换pre和cur指向的值,之后++cur,cur变为2指向为0,则向后移动,以此类推

3.代码

class Solution {
public:
    void moveZeroes(vector<int>& nums) {
       for(int pre = -1, cur = 0; cur<nums.size(); ++cur){
           if(nums[cur] != 0){
                ++pre;//先++pre然后再交换数数据
                swap(nums[pre], nums[cur]);
            }
       }
    }
};


http://www.kler.cn/news/316119.html

相关文章:

  • Linux:权限管理
  • mysql等保数据库命令
  • 【动态规划】两个数组的 dp 问题二
  • 828华为云征文 | 云服务器Flexus X实例:开源项目 LangChain 部署,实例测试
  • 演示:基于WPF的DrawingVisual开发的Chart图表和表格绘制
  • 【编程基础知识】mysql是怎样执行一条sql语句的,涉及到哪些环节步骤是,mysql的整体体系结构是啥样的,有哪些组件
  • 如何使用ssm实现大湾区旅游推荐系统的设计与实现+vue
  • (一)Lambda-Stream流
  • 前端常用的设计模式
  • C++ -缺省参数-详解
  • Exploring Large Language Models for Knowledge Graph Completion
  • 【设计模式】工厂模式、单例模式、观察者模式、发布订阅模式
  • C++_继承详解
  • 构建智能化直播美颜工具:视频美颜SDK的开发指南
  • 灯塔:JavaScript
  • C++:多态(协变,override,final,纯虚函数抽象类,原理)
  • 10 vue3之全局组件,局部组件,递归组件,动态组件
  • 博睿谷IT认证-订阅试学习
  • 利用H5无插件播放RTSP流的实现方案
  • Vue3 路由传参:玩转 params,让页面交互更流畅!
  • 什么是堡垒机?运维为什么需要堡垒机?
  • ES 索引或索引模板
  • 【图像匹配】基于SIFT算法的图像匹配,matlab实现
  • ECMAScript与JavaScript的区别:深入解析与代码实践
  • 出厂非澎湃OS手机解BL锁
  • STM32篇:通用输入输出端口GPIO
  • 智谱清影的魅力:使用CogVideoX-2b生成6秒视频的真实体验!
  • 信息安全工程师(10)网络信息安全法律与政策文件
  • jvm中的程序计数器、虚拟机栈和本地方法栈
  • Spring8-事务