移动零(java)

简介: 移动零(java)

移动零(java)


来自于LeetCode算法题(java)

移动零

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

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

示例 1:

输入: nums = [0,1,0,3,12]

输出: [1,3,12,0,0]

示例 2:

输入: nums = [0]

输出: [0]

class Solution {
    public void moveZeroes(int[] nums) {
        int n = nums.length, left = 0, right = 0;
        //必须在不复制数组的情况下原地对数组进行操作。
        while (right < n) {     //进入循环的条件
            if (nums[right] != 0) {     //如果nums数组中下标为right的不等于0,进入判断
                swap(nums, left, right);//right和left交换
                left++;
            }
            right++;
            /**
            第一次[0, 1, 0, 3, 12]
            第二次[1, 0, 0, 3, 12]
            第三次[1, 0, 0, 3, 12]
            第四次[1, 3, 0, 0, 12]
            第五次[1, 3, 12, 0, 0]
             */
        }
    }
    public void swap(int[] nums, int left, int right) {
        int temp = nums[left];
        nums[left] = nums[right];
        nums[right] = temp;
    }
}
相关文章
|
小程序 Java 编译器
初识Java
初识Java
78 0
|
Java
Java一些常见的坑
总是觉得自己Java基础还是不行,需要恶补。今天偶然mark了一本《Java解惑》,其中以端程序的方式罗列了95个即常见又不常见的xian(坑)jing(儿),拿来瞻仰一下。
60 0
|
Java
Java常见的坑(二)
你猜上述程序输出的是什么? 是 ABC easy as 123 吗? 你执行了输出操作,你才发现输出的是 ABC easy as [C@6e8cf4c6 ,这么一串丑陋的数字是什么鬼? 实际上我们知道字符串与任何数值的相加都会变为字符串,上述事例也不例外, numbers输出其实实际上是调用了Object.toString()方法,让numbers转变为'[c' + '@' + 无符号的十六进制数。
48 0
|
缓存 算法 安全
关于 Java 18 你想知道的一切(下)
关于 Java 18 你想知道的一切(下)
关于 Java 18 你想知道的一切(下)
|
前端开发 Java 测试技术
关于 Java 18 你想知道的一切(中)
关于 Java 18 你想知道的一切(中)
关于 Java 18 你想知道的一切(中)
|
人工智能 Java
Java i++ 与 ++i
Java i++ 与 ++i
155 0
Java i++ 与 ++i
|
Java
java14-java命名规范
java14-java命名规范
123 0
|
消息中间件 NoSQL 前端开发
|
人工智能 Java 程序员
6月来了,Java还是第一!
今天是2019年6月1号,栈长祝各位小程序猿们节日快乐。
6月来了,Java还是第一!
|
Java
Java之TimeUnit
Java之TimeUnit
212 0