Daily LeetCode – day0071 0870. Advantage Shuffle

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;
    }
}
学习笔记:
这道题就是需要将索引进行排序,排序的参考是原本数组中数值的大小。
接下来就是贪心算法了,能放就放,不能放就搞个最小的凑数,相当于田忌赛马。


关于樊轶群

一个善良的理想主义者。
此条目发表在每日LeetCode分类目录。将固定链接加入收藏夹。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注