当前位置:首页 » 《我的小黑屋》 » 正文

[Java·算法·简单] LeetCode 283. 移动零

24 人参与  2024年03月27日 16:20  分类 : 《我的小黑屋》  评论

点击全文阅读


人不走空

                                                                      

      ?个人主页:人不走空      

?系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

目录

      ?个人主页:人不走空      

?系列专栏:算法专题

⏰诗词歌赋:斯是陋室,惟吾德馨

题目

示例

示例1

示例2

提示 

详细解读

idea上代码运行

作者其他作品:


题目

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

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

示例

示例1

输入:nums = [100,4,200,1,3,2]输出:4解释:最长数字连续序列是 [1, 2, 3, 4]。它的长度为 4。

示例2

输入: nums = [0]输出: [0]

提示 

?️ 力扣原文

class Solution {    public void moveZeroes(int[] nums) {        if(nums == null){            return;        }        int j=0;        for(int i=0;i<nums.length;i++){            if(nums[i] != 0){                nums[j++] = nums[i];            }        }        for(int i=j;i<nums.length;++i){            nums[i]=0;        }    }}

详细解读

这段代码实现了将数组中的所有零元素移动到数组末尾的操作,同时保持非零元素的相对顺序不变。下面是对代码的解释:

首先,检查输入的数组是否为空,如果为空,则直接返回,因为无需进行任何操作。

创建一个指针j,初始化为0,用于记录非零元素应该放置的位置。

进行一次遍历数组。对于每个非零元素,将其放置到nums[j]位置,并递增j

完成第一次遍历后,数组中所有的非零元素都已经按顺序移动到了数组的前部,而j的值也指向了下一个可能为零的位置。

进行第二次遍历,从j开始,将剩余的数组位置都置为零,以完成所有零元素的移动操作。

这段代码的时间复杂度为O(n),其中n是数组的长度,因为它只需要对数组进行两次遍历。

idea上代码运行

public class Main {    public static void main(String[] args) {        Solution solution = new Solution();        // 示例用例1        int[] nums1 = {0, 1, 0, 3, 12};        solution.moveZeroes(nums1);        System.out.println("移动零后的数组1:");        for (int num : nums1) {            System.out.print(num + " ");        }        System.out.println();        // 示例用例2        int[] nums2 = {0, 0, 0, 1, 2, 3};        solution.moveZeroes(nums2);        System.out.println("移动零后的数组2:");        for (int num : nums2) {            System.out.print(num + " ");        }        System.out.println();    }}


作者其他作品:

【Java】Spring循环依赖:原因与解决方法

OpenAI Sora来了,视频生成领域的GPT-4时代来了

[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读

【Java】深入理解Java中的static关键字

[Java·算法·简单] LeetCode 28. 找出字a符串中第一个匹配项的下标 详细解读

了解 Java 中的 AtomicInteger 类

算法题 — 整数转二进制,查找其中1的数量

. - 力扣(LeetCode)

Java企业应用软件系统架构演变史


点击全文阅读


本文链接:http://zhangshiyu.com/post/86718.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1