山东建设监理协会网站无法登录,wordpress火车头采集,网站建设的方案计划,注册网站给谁交钱目录链接#xff1a;
力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目#xff1a;
https://github.com/September26/java-algorithms 原题链接#xff1a;力扣 描述#xff1a;
给你两个二维整数数组 items1 和 items2 #xff0c;表示两个物品集合。每个数…目录链接
力扣编程题-解法汇总_分享记录-CSDN博客 GitHub同步刷题项目
https://github.com/September26/java-algorithms 原题链接力扣 描述
给你两个二维整数数组 items1 和 items2 表示两个物品集合。每个数组 items 有以下特质
items[i] [valuei, weighti] 其中 valuei 表示第 i 件物品的 价值 weighti 表示第 i 件物品的 重量 。items 中每件物品的价值都是 唯一的 。
请你返回一个二维数组 ret其中 ret[i] [valuei, weighti] weighti 是所有价值为 valuei 物品的 重量之和 。
注意ret 应该按价值 升序 排序后返回。 示例 1
输入items1 [[1,1],[4,5],[3,8]], items2 [[3,1],[1,5]]
输出[[1,6],[3,9],[4,5]]
解释
value 1 的物品在 items1 中 weight 1 在 items2 中 weight 5 总重量为 1 5 6 。
value 3 的物品再 items1 中 weight 8 在 items2 中 weight 1 总重量为 8 1 9 。
value 4 的物品在 items1 中 weight 5 总重量为 5 。
所以我们返回 [[1,6],[3,9],[4,5]] 。示例 2
输入items1 [[1,1],[3,2],[2,3]], items2 [[2,1],[3,2],[1,3]]
输出[[1,4],[2,4],[3,4]]
解释
value 1 的物品在 items1 中 weight 1 在 items2 中 weight 3 总重量为 1 3 4 。
value 2 的物品在 items1 中 weight 3 在 items2 中 weight 1 总重量为 3 1 4 。
value 3 的物品在 items1 中 weight 2 在 items2 中 weight 2 总重量为 2 2 4 。
所以我们返回 [[1,4],[2,4],[3,4]] 。
示例 3
输入items1 [[1,3],[2,2]], items2 [[7,1],[2,2],[1,4]]
输出[[1,7],[2,4],[7,1]]
解释
value 1 的物品在 items1 中 weight 3 在 items2 中 weight 4 总重量为 3 4 7 。
value 2 的物品在 items1 中 weight 2 在 items2 中 weight 2 总重量为 2 2 4 。
value 7 的物品在 items2 中 weight 1 总重量为 1 。
所以我们返回 [[1,7],[2,4],[7,1]] 。提示
1 items1.length, items2.length 1000items1[i].length items2[i].length 21 valuei, weighti 1000items1 中每个 valuei 都是 唯一的 。items2 中每个 valuei 都是 唯一的 。解题思路
* 解题思路
* 构建一个map其中key为pricevalue为price和weight。
* 最后map的value转换成list然后排序即可 代码
public class Solution2363 {public ListListInteger mergeSimilarItems(int[][] items1, int[][] items2) {MapInteger, ListInteger map new HashMap();put2Map(map, items1);put2Map(map, items2);ListListInteger collect map.values().stream().sorted(Comparator.comparingInt(o - o.get(0))).collect(Collectors.toList());return collect;}private void put2Map(MapInteger, ListInteger map, int[][] items1) {for (int[] item : items1) {int value item[0];int weight item[1];ListInteger integers map.get(value);if (integers null) {integers new ArrayList();map.put(value, integers);}if (integers.size() 0) {integers.add(value);integers.add(weight);} else {Integer remove integers.remove(1);integers.add(remove weight);}}}
}