移动零(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 API
|
存储 Java 调度
Java 编译指令集大全
Java 编译指令集大全
189 0
|
存储 Java
|
存储 自然语言处理 运维
JAVA问答11
JAVA问答11
101 0
|
设计模式 缓存 Dubbo
JAVA问答9
JAVA问答9
120 0
|
Java
Java常见的坑(二)
你猜上述程序输出的是什么? 是 ABC easy as 123 吗? 你执行了输出操作,你才发现输出的是 ABC easy as [C@6e8cf4c6 ,这么一串丑陋的数字是什么鬼? 实际上我们知道字符串与任何数值的相加都会变为字符串,上述事例也不例外, numbers输出其实实际上是调用了Object.toString()方法,让numbers转变为'[c' + '@' + 无符号的十六进制数。
45 0
|
前端开发 Java 测试技术
关于 Java 18 你想知道的一切(中)
关于 Java 18 你想知道的一切(中)
关于 Java 18 你想知道的一切(中)
|
分布式计算 Java 关系型数据库
蓦然回首,Java 已经 24 岁了!
蓦然回首,Java 已经 24 岁了!
蓦然回首,Java 已经 24 岁了!