Java 题解 | #最高售价的两只牛#

最高售价的两只牛

https://www.nowcoder.com/practice/8e4a09d5f63d4298a8507decf5d12490

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param pricesA int整型一维数组
     * @param pricesB int整型一维数组
     * @param k int整型
     * @return int整型二维数组
     */
    public int[][] kPairsWithLargestSums (int[] pricesA, int[] pricesB, int k) {
        // write code here
        // 使用 Map 存储每对牛的总价格
        Map<int[], Integer> map = new HashMap<>();
        for (int i = 0; i < pricesA.length; i++) {
            for (int j = 0; j < pricesB.length; j++) {
                map.put(new int[] {pricesA[i], pricesB[j]}, pricesA[i] + pricesB[j]);
            }
        }

        // 将 Map.Entry 存入 List,并进行排序
        List<Map.Entry<int[], Integer>> list = new ArrayList<>(map.entrySet());
        list.sort(new Comparator<Map.Entry<int[], Integer>>() {
            @Override
            public int compare(Map.Entry<int[], Integer> o1, Map.Entry<int[], Integer> o2) {
                if (o1.getValue() > o2.getValue()) {
                    return -1;
                } else if (o1.getValue().equals(o2.getValue())) {
                    return o2.getKey()[0] - o1.getKey()[0];
                } else {
                    return 1;
                }
            }
        });

        // 构造结果数组
        int[][] result = new int[k][2];
        for (int i = 0; i < k; i++) {
            result[i] = list.get(i).getKey();
        }
        return result;
    }
}

代码使用的是Java编程语言。

该题考察的知识点主要是基本数据结构的操作,以及排序算法(比较器的使用)

代码的文字解释如下:

  • 对于给定的两个数组 pricesA 和 pricesB,使用嵌套的循环遍历它们的所有组合,并计算每对牛的总价格,然后将牛的价格组合和对应的总价格存入 Map
  • 将 Map 中的数据存入 List,以便进行排序。
  • 使用自定义的比较器对 List 进行排序。比较器的逻辑如下:首先比较两对牛的总价格,如果总价格不相等,则按总价格降序排列(总价格大的在前)。如果总价格相等,则按第一个数组的价格升序排列(价格低的在前)。
  • 排序后的 List 中的元素即为按照条件排列好的牛的价格组合。
  • 构造结果数组 result,将排序后的牛的价格组合存入其中,并返回结果。
全部评论

相关推荐

不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
11-09 11:01
济南大学 Java
Java抽象带篮子:外卖项目真得美化一下,可以看看我的详细的外卖话术帖子
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务