三色球问题

91 阅读1分钟
package com.justalk.javademo.leetcode;

import java.util.Arrays;

public class 三色球 {

    //红黄蓝三色球分别用数字1、2、3来表示,有个三色球数组[1,2,3,2,1,3,2,2,1,1,3],对它进行归类,
    // 输出[1,1,1,1,2,2,2,2,3,3,3],
    // 要求不用辅助空间,时间复杂度O(n)
    public static void main(String[] args) {
        method2();
    }

    private static void method2() {
        int oneCount = 0;
        int twoCount = 0;
        int[] num = {1, 2, 3, 2, 2, 3, 1, 2, 1, 3, 2, 2, 1, 1, 3};
        for (int i : num) {
            if (i == 1) {
                oneCount++;
            } else if (i == 2) {
                twoCount++;
            }
        }
        for (int i = 0; i < num.length; i++) {
            if (i < oneCount) {
                num[i] = 1;
            } else if (i < oneCount + twoCount) {
                num[i] = 2;
            } else {
                num[i] = 3;
            }
        }
        System.out.println(Arrays.toString(num));
    }
}