LeetCode 283 移动零

简介: LeetCode 283 移动零

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


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



解法一:使用i遍历数组,使用j标记数组下一个位置(存放在遍历后面的时候不等于0的数字值,并且将此位置赋值为0)


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


3.解法二:遍历非零数据,将非零数据放到前面,之后从j++开始补0;


class Solution {
    public void moveZeroes(int[] nums) {
        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;
        }
    }
}


4.区别:两者都是将数组进行遍历查询非零数据,区别在于一个是直接将0补上,另一个是直接在最后一次补全。


相关文章
|
前端开发 算法 JavaScript
LeetCode移动零使用JavaScript解题|前端学算法
LeetCode移动零使用JavaScript解题|前端学算法
92 0
LeetCode移动零使用JavaScript解题|前端学算法
|
JavaScript
JS 刷 Leetcode:283. 移动零
JS 刷 Leetcode:283. 移动零
JS 刷 Leetcode:283. 移动零
|
存储 算法 Java
力扣LeetCode初级算法(加一,移动零)(二)
力扣LeetCode初级算法(加一,移动零)
112 0
力扣LeetCode初级算法(加一,移动零)(二)
|
Java
《LeetCode刷题》—283. 移动零
《LeetCode刷题》—283. 移动零
100 0
《LeetCode刷题》—283. 移动零
|
算法 Python
LeetCode 283. 移动零 Move Zeroes
LeetCode 283. 移动零 Move Zeroes
LeetCode每日一题——462. 最少移动次数使数组元素相等 II
给你一个长度为 n 的整数数组 nums ,返回使所有数组元素相等需要的最少移动数。
94 0
|
存储 算法 Java
力扣LeetCode初级算法(加一,移动零)
力扣LeetCode初级算法(加一,移动零)
130 0
【LeetCode】第5天 - 283. 移动零 | 167. 两数之和 II - 输入有序数组
【LeetCode】第5天 - 283. 移动零 | 167. 两数之和 II - 输入有序数组
121 0
【LeetCode】第5天 - 283. 移动零 | 167. 两数之和 II - 输入有序数组