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

LeetCode 283.移动零(超简单讲解)

283.移动零

  • 题目
  • 示例
    • 示例1
    • 示例2
  • 解题思路
    • 快慢指针
    • 实现设计
  • 详细代码

题目

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

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

示例

示例1

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

示例2

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

解题思路

快慢指针

  • 题目要求我们将所有的零移动到数组末尾,其实等同于将所有非零元素移动到数组开头。我们可以将所有非零元素移动到数组开头,然后将之后的元素赋值为零。
  • 我们可以定义两个指针,快指针和慢指针。快指针找非零元素,慢指针指向非零元素要换到的地方。

实现设计

  • 快指针fast和慢指针slow都初始化为0
  • 用快指针fast遍历数组,找到非零元素,将非零元素,放到慢指针slow所指向的位置,同时,慢指针slow后移。
  • 当快指针fast遍历数组结束,即证明所有非零元素都移动到了数组开头,此时慢指针slow指向非零元素的后一位,所以,我们只需要将慢指针slow到数组末尾的元素全部赋值为0即可

详细代码

class Solution {
    public void moveZeroes(int[] nums) {
    	//快指针找非零元素
        int fast=0;
        //慢指针指向非零元素要换到的地方。
        int slow = 0;
        //遍历快指针fast
        while(fast<nums.length){
            if(nums[fast]!=0){
            	//将非零元素放到slow指向的位置
                nums[slow]=nums[fast];
                slow++;
            }
            fast++;
        }
       	//遍历结束,所有非零元素都在元素开头
       	//slow指向非零元素后一位,将slow到最后的元素全部赋值为0
        for(int i=slow;i<nums.length;i++){
            nums[i]=0;
        }
    }
}

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

相关文章:

  • 【EXCEL_VBA_实战】多工作薄合并深入理解
  • 2025年新开局!谁在引领汽车AI风潮?
  • centos7执行yum操作时报错Could not retrieve mirrorlist http://mirrorlist.centos.org解决
  • FPGA中场战事
  • 钉钉群机器人设置——python版本
  • MySQL训练营-慢查询诊断问题
  • 鸿蒙权限请求工具类
  • 力扣-图论-15【算法学习day.65】
  • 【PyTorch】实现在训练过程中自定义动态调整学习率
  • 测试工程师八股文04|计算机网络 和 其他
  • 【日常笔记】基本数据类型浅析 -int类型能存储哪些传感器数据
  • 减少 Flutter 应用体积的常用方法
  • 在线PDF合并工具 - 快速、免费、安全的文档处理解决方案 | Online PDF Merger Tool
  • 力扣--LCR 164.破解闯关密码
  • K8s 中Istio 的使用示例
  • ThinkPHP 5.1 的模板布局功能
  • CentOS7源码编译安装nginx+php+mysql
  • 前端单元测试实战:从零开始构建可靠的测试体系
  • vue2项目中如何把rem设置为固定的100px
  • Linux:进程通信、管道通信
  • MFC CMDIChildWnd
  • 【Linux】socket编程1
  • jmeter后端监视器
  • selenium 在已打开浏览器上继续调试
  • C/S软件授权注册系统-轻量级WebApi服务器介绍
  • 【Python爬虫系列】_034.抓包工具_Charles