请输入代码
给定两个大小相等的数组 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;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。