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

文章目录

  • 1、题目描述
    • [1.1 移动所有零至数组末尾](#1.1 移动所有零至数组末尾)
    • [1.2 示例](#1.2 示例)
  • 2、解题思路
    • [2.1 思路讲解](#2.1 思路讲解)
    • [2.2 动画演示( 待补充)](#2.2 动画演示( 待补充))
    • [2.3 复杂度分析](#2.3 复杂度分析)
  • 3、答案
    • [3.1 Java 代码](#3.1 Java 代码)
    • [3.2 运行结果](#3.2 运行结果)
  • [4、视频讲解( 待补充)](#4、视频讲解( 待补充))

1、题目描述

1.1 移动所有零至数组末尾

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

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

1.2 示例

示例 1

复制代码
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]

示例 2

复制代码
输入: nums = [0]
输出: [0]

2、解题思路

2.1 思路讲解

  • index变量来记录当前处理到了第几个数字
  • 如果当前数值是 0,进入空循环,不做任何处理
  • 每次处理完一个数字,index +1
  • 末尾补零
  • 注意题目中要求不能拷贝数组

2.2 动画演示( 待补充)

2.3 复杂度分析

  • 时间复杂度 : O ( n ) O(n) O(n)

  • 空间复杂度 : O ( 1 ) O(1) O(1)

3、答案

3.1 Java 代码

java 复制代码
public class _03_移动零 {
 
    public static void main(String[] args) {
        System.out.println(Arrays.toString(moveZeroes(new int[]{0, 1, 0, 3, 12})));
        System.out.println(Arrays.toString(moveZeroes(new int[]{0})));
    }

    private static int[] moveZeroes(int[] nums) {
        int index = 0;   //用来记录当前处理到了第几个数字
        for (int i = 0; i < nums.length; i++) {
            // 如果当前数值是 0,进入空循环,不做任何处理
            if (nums[i] != 0) {
                nums[index] = nums[i];
                index++;    //每次处理完一个数字,index +1
            }
        }
        for (int i = index; i < nums.length; i++) {
            nums[i] = 0;
        }
        return nums;
    }
}

3.2 运行结果

4、视频讲解( 待补充)

相关推荐
奈斯先生Vector几秒前
2026 开发者效能革命:基于创源AIGC 与开源生态的工程化实践、安全沙箱与代码智能体协同
人工智能·算法·架构·prompt·aigc
Sagittarius_A*12 分钟前
哈希与认证基础(一):哈希函数的安全目标:原像、第二原像与碰撞
算法·安全·信息安全·密码学·哈希算法
坚持编程的菜鸟1 小时前
模拟实现strncat
c语言·算法·模拟实现strncat
wabs6661 小时前
关于哈希表【力扣1.两数之和的思考】
数据结构·算法·leetcode·散列表·图论
大辉狼_音频架构1 小时前
第 02 篇:时域的语言 —— 卷积、LTI 系统与冲激响应
算法·音视频开发
小卡不对头2 小时前
系统集成项目管理工程师好考吗?零基础小白怎么考,软考题库怎么选?
职场和发展
测试老哥2 小时前
软件测试:单元测试详解
自动化测试·软件测试·python·测试工具·职场和发展·单元测试·测试用例
星轨初途2 小时前
LeetCode 热题 100——day7 接雨水
数据结构·c++·笔记·算法·leetcode·职场和发展
qeen872 小时前
【数据结构】搜索二叉树的介绍与算法原理解析及实现
数据结构·c++·学习·算法·模板
Chen—LSN2 小时前
C语言——深度理解指针(6)
c语言·开发语言·算法·c#