import java.util.Arrays;
// 0870. Advantage Shuffle
class Solution {
public int[] advantageCount(int[] nums1, int[] nums2) {
int len = nums1.length;
Integer[] indexNums2 = new Integer[len];
for (int i = 0; i < len; ++i) indexNums2[i] = i;
Arrays.sort(nums1);
Arrays.sort(indexNums2, (i, j) -> nums2[j] - nums2[i]);
int biggest = len - 1;
int smallest = 0;
int[] ans = new int[len];
for (Integer i : indexNums2) {
if (nums1[biggest] > nums2[i]) {
ans[i] = nums1[biggest];
--biggest;
} else {
ans[i] = nums1[smallest];
++smallest;
}
}
return ans;
}
}
学习笔记:
这道题就是需要将索引进行排序,排序的参考是原本数组中数值的大小。
接下来就是贪心算法了,能放就放,不能放就搞个最小的凑数,相当于田忌赛马。