移动零

移动零

1、题目描述

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

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

2、解答思路

已知数组后端若干元素为0,因此只需遍历查询到非零元素并依次赋值到数组前端(无需交换),最后将后端的值均设置为0即可。

java 复制代码
class Solution {
    public void moveZeroes(int[] nums) {
        // 用于记录非零元素的下标
        int index = 0;
        for (int i = 0; i < nums.length; i++) {
			if(nums[i]!=0) {
                // 将非零元素依次赋值给nums[index],因此相对顺序也不会变
				nums[index++] = nums[i];
			}
		}
        // 从最后一个非零元素到末尾,均赋值为0
        for (int i = index; i < nums.length; i++) {
			nums[i] = 0;
		}
    }
}
  • 本题关键点在于下标 i 和 index 的变化,i 用于遍历整个数组,index 用于存储非零元素。
  • 时间复杂度:o(n)。主要时间花销是for循环遍历整个数组。
相关推荐
朝新_2 小时前
【多线程初阶】阻塞队列 & 生产者消费者模型
java·开发语言·javaee
立莹Sir2 小时前
Calendar类日期设置进位问题
java·开发语言
木子.李3473 小时前
排序算法总结(C++)
c++·算法·排序算法
季鸢4 小时前
Java设计模式之状态模式详解
java·设计模式·状态模式
闪电麦坤954 小时前
数据结构:递归的种类(Types of Recursion)
数据结构·算法
@yanyu6664 小时前
springboot实现查询学生
java·spring boot·后端
ascarl20104 小时前
准确--k8s cgroup问题排查
java·开发语言
magic 2455 小时前
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
java
爱敲代码的憨仔5 小时前
分布式协同自动化办公系统-工作流引擎-流程设计
java·flowable·oa
Gyoku Mint5 小时前
机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
人工智能·python·算法·机器学习·pandas·ai编程·matplotlib