请输入代码给定两个大小相等的数组 A 和 B,A 相对于 B 的优势可以用满足 A[i] > B[i] 的索引 i 的数目来描述。

返回 A 的任意排列,使其相对于 B 的优势最大化。

示例 1:

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

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

假设最终输出的数组为C,这题的核心的思想就在于,任意非负整数i,C[i]的选定都和数组C中其他数的选定无关。
而且这题也不存在什么需要考虑的特殊情况,非常好写。

代码:

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;
    }
}

george
1 声望0 粉丝