LeetCode-Java题解 283. Move Zeroes

题目地址:283. Move Zeroes
解题思路:毫无疑问,这道题依然使用双指针法,但是我一开始做还是没什么思路,只考虑到把非0的元素放置到数组左边,在看了一些大佬的题解后,发现这种方法最为巧妙。其根本思想就是参考快速排序的思想,以0为界限,将整个数组划分为两个区域,左边为非0元素,右边为0i负责遍历整个数组,j负责标记加入的非零元素的位置。

class Solution {
    public void moveZeroes(int[] nums) {
         if (nums == null || nums.length == 0) {
            return;
        }
        int j = 0;
        for (int i = 0; i < nums.length; i++) {
            if (nums[i] != 0) {
                int temp = nums[i];
                nums[i] = nums[j];
                nums[j++] = temp;
            }
        }
    }
}
posted @ 2022-02-12 23:30  古宇  阅读(23)  评论(0编辑  收藏  举报

欢迎来刀