移动零

移动零

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循环遍历整个数组。
相关推荐
小猪咪piggy4 分钟前
【算法】day 20 leetcode 贪心
算法·leetcode·职场和发展
likuolei24 分钟前
XQuery 完整语法速查表(2025 最新版,XQuery 3.1)
xml·java·数据库
雨中飘荡的记忆29 分钟前
LangChain4j 实战指南
java·langchain
forestsea29 分钟前
现代 JavaScript 加密技术详解:Web Crypto API 与常见算法实践
前端·javascript·算法
okseekw31 分钟前
Java 中的方法:从定义到重载的完整指南
java
雨中飘荡的记忆31 分钟前
深入理解设计模式之适配器模式
java·设计模式
用户849137175471632 分钟前
生产级故障排查实战:从制造 OOM 到 IDEA Profiler 深度破案
java·jvm
张洪权33 分钟前
bcrypt 加密
算法
雨中飘荡的记忆36 分钟前
深入理解设计模式之装饰者模式
java·设计模式
雨中飘荡的记忆40 分钟前
秒杀系统设计与实现
java·redis·lua