leetcode 870.優點洗牌

請輸入代碼給定兩個大小相等的數組 A 和 B,A 相對於 B 的優點能夠用知足 A[i] > B[i] 的索引 i 的數目來描述。數組

返回 A 的任意排列,使其相對於 B 的優點最大化。code

示例 1:索引

輸入:A = [2,7,11,15], B = [1,10,4,11]
輸出:[2,11,7,15]
示例 2:rem

輸入:A = [12,24,8,32], B = [13,25,32,11]
輸出:[24,32,8,12]get

假設最終輸出的數組爲C,這題的核心的思想就在於,任意非負整數i,C[i]的選定都和數組C中其餘數的選定無關。
並且這題也不存在什麼須要考慮的特殊狀況,很是好寫。io

代碼:class

class Solution {
    public int[] advantageCount(int[] A, int[] B) {
        Arrays.sort(A);
        List<Integer> list = new ArrayList<>();
        for(int i = 0 ; i < A.length ; i++){
            list.add(A[i]);
        }
        int [] C = new int [A.length];
        for(int i =0 ; i < C.length ; i++){
            C[i] = Integer.MIN_VALUE;
            for(int j = 0; j < list.size() ; j++ ){
                if(list.get(j) > B[i]){
                    C[i] = list.remove(j);
                    break;
                }
            }
        }
        for(int i = 0 ; i < C.length; i++){
           
           if(C[i] == Integer.MIN_VALUE){
                C[i] = list.remove(0);
            }
        }
        return C;
    }
}
相關文章
相關標籤/搜索