移动零

移动零

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循环遍历整个数组。
相关推荐
学Linux的语莫几秒前
k8s知识点整体概览
java·linux·kubernetes
k***92161 分钟前
list 迭代器:C++ 容器封装的 “行为统一” 艺术
java·开发语言·数据结构·c++·算法·list
natide17 分钟前
词汇/表达差异-6-n-gram分布距离
人工智能·python·算法
xunyan623420 分钟前
异常处理-异常概述
java·学习
xu_yule22 分钟前
算法基础-多源最短路
c++·算法·多源最短路
小付爱coding24 分钟前
MCP官方调试工具
java·人工智能
一瓢西湖水31 分钟前
浅谈eclipse memory analyzer的应用
java·eclipse
愚公移码37 分钟前
蓝凌EKP产品:理解连接池、理解Hikari和Druid 区别
java·oracle·hibernate
天远Date Lab38 分钟前
构建金融级风控中台:Java Spring Boot 集成天远借贷风险探查 API 实战
java·大数据·spring boot·金融
火羽白麟41 分钟前
大坝安全的“大脑”——模型与算法
算法·模型·大坝安全