首页 > 移动平台 > 详细

[LeetCode] 283. Move Zeroes ☆(移动0到最后)

时间:2019-06-28 17:13:32      阅读:87      评论:0      收藏:0      [点我收藏+]

描述

给定一个数组nums,写一个函数,将数组中所有的0挪到数组的末尾,维持其他所有非0元素的相对位置。 举例: nums = [0, 1, 0, 3, 12],

 函数运行后结果为[1, 3, 12, 0, 0]

解析

快慢指针,慢指针指向第一个0,快指针指向第一个非0.

代码

public static void main(String[] args) {
        int[] n = {4,2,4,0,0,3,0,5,1,0};
        moveZero(n);
        System.out.println(JSON.toJSONString(n));
    }

    public static void moveZero(int[] n) {
        if (n == null || n.length < 2) {
            return;
        }
        int slow = 0;
        int fast = 1;
        while (fast < n.length && slow < n.length) {
            if (n[slow] == 0 && n[fast] != 0) {
                swap(n, slow++, fast++);
            } else if (n[slow] == 0 && n[fast] == 0) {
                fast++;
            } else {
                slow++;
                fast++;
            }
        }
    }

    public static void swap(int[] n, int a, int b) {
        if (a == b) {
            return;
        }
        n[a] = n[a] ^ n[b];
        n[b] = n[a] ^ n[b];
        n[a] = n[a] ^ n[b];
    }

 

[LeetCode] 283. Move Zeroes ☆(移动0到最后)

原文:https://www.cnblogs.com/fanguangdexiaoyuer/p/11103658.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!