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

【LeetCode热题100】【双指针】移动零

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

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

示例 1:

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

示例 2:

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

提示:

  • 1 <= nums.length <= 104
  • -231 <= nums[i] <= 231 - 1

进阶:你能尽量减少完成的操作次数吗?

题解

暴力的话两层循环可以解决问题,但显然能不暴力就不暴力,这里有个O(n)的方法

反过来思考,直接先把不为0的元素放好,记录不是0的元素的位置i和数目one,遇到一个不为0的数直接放,最后的结果就是非0元素的相对顺序没变,然后把不为0元素后面的都变成0

class Solution {
public:void moveZeroes(vector<int>& nums) {int one=0;for(int i=0;i<nums.size();i++){if(nums[i]){nums[one++]=nums[i];}}while(one<nums.size()){nums[one++]=0;}}
};

http://www.lryc.cn/news/250882.html

相关文章:

  • Mybatis 分页查询的三种实现
  • 各类声音数据集大合集—乐器、车辆、鸟鸣、蜜蜂声音、歌曲、喇叭、人类声音不同等类型的声音数据集
  • java设计模式学习之【原型模式】
  • 链表数组插入排序
  • MyBatis的创建,简单易懂的一篇blog
  • MOS管的静电击穿问题
  • 在线 SQL 模拟器SQL Fiddle使用简介
  • 仿京东淘宝商品列表筛选组件:实现一个高效的侧边栏弹框筛选功能
  • 软件工程 - 第8章 面向对象建模 - 4 - 物理体系结构建模
  • 【智能家居】二、添加火灾检测模块(烟雾报警功能点)
  • history和hash两种路由模式原理,和优缺点
  • Nginx 具体应用
  • 计算机网络之网络传输,三次握手和四次挥手
  • Azure Machine Learning - 在 Azure AI 搜索中创建全文查询
  • 基于YOLOv8深度学习的钢材表面缺陷检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战
  • 深度学习常见回归分支算法逐步分析,各种回归之间的优缺点,适用场景,举例演示
  • Programming Contest 2023(AtCoder Beginner Contest 331)D题 Tile Pattern --- 题解
  • Google测试框架googletest简介与使用方法
  • 进程的创建:fork()
  • Fabric:创建应用通道
  • 力扣每日一题(2023-11-30)
  • 内部类Lambda
  • 设一棵二叉树中各结点的值互不相同,其先序遍历序列和中序遍历序列分别存于两个一维数组A[1...n]和 Bfl...n]中,试编写算法建立该二叉树的二叉链表。
  • 什么是Daily Scrum?
  • 逆波兰表达式求值[中等]
  • Oracle连接和使用
  • redis单线程为什么这么快
  • 工业机器视觉megauging(向光有光)使用说明书(五,轻量级的visionpro)
  • 【LittleXi】2023年广东工业大学腾讯杯新生程序设计竞赛
  • 【C语言:数据在内存中的存储】