题解 | #最高售价的两只牛# 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
                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())) {
                    // 如果总价格相同,则按照 A 牛的价格降序排列
                    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 编程语言。

该题考察了以下知识点:

  1. Map 存储键值对
  2. List 存储和排序
  3. 自定义 Comparator
  4. 二维数组操作

代码的文字解释如下:

  • 使用一个 Map 存储每对牛的总价格,键是一个 int[] 数组,包含 A 牛价格和 B 牛价格,值是总价格(A 牛价格 + B 牛价格)。
  • 然后,将 Map 中的每个键值对存入一个 List,以便进行排序。
  • 在排序过程中,使用自定义的比较器(Comparator)来对键值对进行排序。首先,按照总价格降序排列。如果总价格相同,我们按照 A 牛的价格降序排列。
  • 构造一个大小为 k 的二维数组 result,将排好序的键值对的键存入其中,即 A 牛价格和 B 牛价格。
  • 返回构造好的二维数组 result 作为结果。
全部评论

相关推荐

04-03 11:37
武汉大学 Java
高斯林的信徒:武大简历挂?我勒个骚岗
点赞 评论 收藏
分享
04-06 11:24
已编辑
太原学院 C++
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务