首页 > 其他分享 >移动0

移动0

时间:2024-11-04 21:00:22浏览次数:1  
标签:遍历 指向 nums 元素 数组 移动 指针

移动0

题目

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

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

示例

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

思路

  • 使用快慢指针,快指针指向遍历的新元素,慢指针指向已经处理好的(没有0)的下一位
  • 当快指针指的元素不为0时,就去比较与慢指针指向的是不是一个元素,
    • 如果是一个元素,就不需要更改,快慢指针同时向前一步
    • 如果不是一个元素,就要进行处理了,将快指针指向的元素赋值到慢指针指向的位置,同时将快指针指向的位置赋0(这样遍历一遍后就不需要再处理了),然后将慢指针和快指针都向前一步
  • 如果快指针指向的元素为0,那么就遍历下一个元素,快指针加一即可

代码

public void moveZeroes(int[] nums)  {
    int i = 0, j =0;
    while (j < nums.length) {
        if (nums[j] != 0) {
            if (i < j) {
                nums[i] = nums[j];
                nums[j] = 0;
            }
            i++;
        }
        j++;
    }
}

标签:遍历,指向,nums,元素,数组,移动,指针
From: https://www.cnblogs.com/wwgroup/p/18526264

相关文章

  • 腾讯通RTX替代方案,支持Linux系统及移动端使用
    一、腾讯通RTX继续使用的关键难题腾讯通RTX自停更及官网下架以来,直接阻断了用户的更新获取、技术支持和资源下载渠道,用户不得不面对下列难以忽视的核心问题:在国产系统和移动端无法使用:腾讯通RTX仅支持Windows与Mac系统,在国产操作系统以及移动端上无法正常使用。组织架构同步滞......
  • java+vue计算机毕设大学校园后勤移动报修系统【开题+程序+论文+源码】
    本系统(程序+源码)带文档lw万字以上文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着信息技术的飞速发展和智能手机的普及,移动应用已成为人们日常生活和工作中的重要组成部分。在大学校园环境中,后勤管理作为保障教学与生活秩序的关......
  • 固态移动硬盘不识别数据恢复
    当固态移动硬盘不被识别时,数据恢复成为一个关键问题。以下是一些有效的数据恢复方法:一、检查连接与驱动程序检查连接:首先确认固态移动硬盘的连接是否正确,包括SATA接口、电源连接(如果适用)以及USB线或其他转接线是否损坏或松动。对于外置硬盘,确保连接线和转接器没有损坏。更新驱......
  • Geogebra基础篇019—Geogebra的移动工具(单选、框选、沿点线面体拖动、自由旋转、指定
    注意:关注微信公众号“第五智能”,免费查阅全系列文章(或者微信顶部直接搜索“Geogebra的移动工具”就可以找到了)。关于Geogebra移动工具的知识还是比较繁琐的,比如视图中的对象,大家都知道点击单选,但是怎么框选呢?怎么横移画布、怎么沿点拖动、沿线拖动、沿面拖动、甚至是沿体积......
  • Openlayers高级交互(14/20):汽车移动轨迹动画(开始、暂停、结束)
    本示例演示在vue+openlayers中实现轨迹动画,这里设置了小汽车开始,暂停,结束等的控制键,采用了线段步长位置获取坐标来定位点的方式来显示小车的动态。效果图专栏名称内容介绍Openlayers基础实战(72篇)专栏提供73篇文章,为小白群体提供基础知识及示例演示,能解决基础......
  • 什么是移动云
    移动云(MobileCloud)是一种结合了移动计算和云计算的技术,旨在为移动设备提供便捷的数据存储和处理能力。本文将深入探讨:1、移动云的定义及特点;2、移动云的工作原理;3、移动云的优势和挑战;4、移动云在各领域的应用;5、移动云的未来发展趋势。在优势和挑战这一部分,我们将更详细地探讨......
  • 【Unity移动端触控插件】Control Freak 2 - Touch Input Made Easy!
    ControlFreak2是一款专为Unity开发的插件,旨在简化触控输入的处理,特别适用于移动设备游戏。它提供了一整套易于使用的界面和控件,使开发者能够快速创建响应式的触摸输入系统,提升用户体验。主要功能多种控件支持:提供虚拟摇杆、按钮、滑块等多种触控控件,方便开发者根据......
  • 第五代移动通信网络(5G)络和第四代移动通信网络(4G)有什么区别
    第五代移动通信网络(5G)与第四代移动通信网络(4G)之间的主要区别包括:1.数据传输速率;2.延迟时间;3.连接能力;4.频段利用;5.技术架构;6.应用场景;7.能源效率。其中,5G提供了更高的数据传输速率和更低的延迟,为IoT和AI应用创造了更多可能性。1.数据传输速率4G网络的峰值下载速度可达1......
  • CesiumJS 案例 P17:添加文本、文本样式、删除文本、移动文本
    CesiumJSCesiumJSAPI:https://cesium.com/learn/cesiumjs/ref-doc/index.htmlCesiumJS是一个开源的JavaScript库,它用于在网页中创建和控制3D地球仪(地图)一、添加文本<!DOCTYPEhtml><htmllang="en"> <head> <metacharset="UTF-8"/> &l......
  • 增强 vw/rem 移动端适配,适配宽屏、桌面端、三折屏
    增强vw/rem移动端适配,适配宽屏、桌面端、三折屏vw和rem是两个神奇的CSS长度单位,认识它们之前,我一度认为招聘广告上的“像素级还原”是一种超能力,我想具备这种能力的人,一定专业过硬、有一双高分辨率的深邃大眼睛。时间一晃,入坑两年,我敏捷地移动有点僵硬不算过硬的小手,将一......