移动零

移动零

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循环遍历整个数组。
相关推荐
香菜大丸16 分钟前
leetcode 面试150之 Z 字形变换
算法·leetcode
小灰灰__21 分钟前
Java通过calcite实时读取kafka中的数据
java·kafka·linq
java小吕布27 分钟前
Java Servlet详解:Servlet的生命周期、请求处理与响应发送
java·开发语言·servlet
武子康30 分钟前
大数据-225 离线数仓 - 目前需求分析 指标口径 日志数据采集 taildir source HDFS Sink Agent Flume 优化配置
java·大数据·数据仓库·hadoop·hdfs·数据挖掘·flume
世间万物皆对象31 分钟前
Spring Boot核心概念:自动配置
java·spring boot·后端
祁思妙想31 分钟前
23.<Spring图书管理系统(强制登录版本)>
java·spring·java-ee
csdn56597385032 分钟前
Elasticsearch 查看磁盘占用 查看指定索引磁盘占用
java·数据库·elasticsearch
Dnelic-32 分钟前
【Java 集合】Collections 空列表细节处理
java·集合·collection·空对象·自学笔记
weixin_4383354033 分钟前
根据 Maven 的不同 profiles 来改变 Spring Boot 应用程序的配置
java·spring boot·maven
菩提祖师_1 小时前
基于大模型实现论文观点查重
java·深度学习