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

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;//遍历快指针fastwhile(fast<nums.length){if(nums[fast]!=0){//将非零元素放到slow指向的位置nums[slow]=nums[fast];slow++;}fast++;}//遍历结束,所有非零元素都在元素开头//slow指向非零元素后一位,将slow到最后的元素全部赋值为0for(int i=slow;i<nums.length;i++){nums[i]=0;}}
}

http://www.mrgr.cn/news/80420.html

相关文章:

  • sqlalchemy异步方法使用
  • opencv所有常见函数
  • 嵌入式面试知识点总结 -- 面试篇
  • vs 调试
  • YOLO11改进-模块-引入多尺度差异融合模块MDFM
  • 实现SpringBoot项目嵌入其他项目
  • docker离线安装、linux 安装docker
  • 概率论得学习和整理26:EXCEL 关于plot 折线图--频度折线图的一些细节
  • 通过一个例子学习回溯算法:从方法论到实际应用
  • 课设项目十:智能手电筒(使用金沙滩51单片机)
  • Qt WORD/PDF(三)使用 QAxObject 对 Word 替换(QML)
  • 【系统分析师】-收官整理-已考过
  • Day13洛谷 2043+2042+2040+2035+2034+2033+2030+2027+2031+2029
  • selenium工作原理
  • Python 参数配置使用 XML 文件的教程 || Python打包 || 模型部署
  • 规则引擎drools(一)-技术要点
  • 【软件工程】简答题系列(一)(山东大学·软院考试专属)
  • 【爬虫一】python爬虫基础合集一
  • ubuntu下anconda装pytorch
  • 业务观测:从定义到场景化分析
  • Linux栈帧
  • DALL·E 2(内含扩散模型介绍)-生成式模型【学习笔记】
  • elasticsearch 使用enrich processor填充数据
  • es中段是怎么合并的
  • java中的List、数组和set
  • 电脑显示器选购指南2024