当前位置: 首页 > news >正文

​力扣解法汇总2363. 合并相似的物品

目录链接:

力扣编程题-解法汇总_分享+记录-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 <= 1000
  • items1[i].length == items2[i].length == 2
  • 1 <= valuei, weighti <= 1000
  • items1 中每个 valuei 都是 唯一的 。
  • items2 中每个 valuei 都是 唯一的 。

解题思路:

* 解题思路:
* 构建一个map,其中key为price,value为price和weight。
* 最后map的value转换成list,然后排序即可
 

代码:

public class Solution2363 {public List<List<Integer>> mergeSimilarItems(int[][] items1, int[][] items2) {Map<Integer, List<Integer>> map = new HashMap<>();put2Map(map, items1);put2Map(map, items2);List<List<Integer>> collect = map.values().stream().sorted(Comparator.comparingInt(o -> o.get(0))).collect(Collectors.toList());return collect;}private void put2Map(Map<Integer, List<Integer>> map, int[][] items1) {for (int[] item : items1) {int value = item[0];int weight = item[1];List<Integer> 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);}}}
}

http://www.lryc.cn/news/23895.html

相关文章:

  • 2022年终总结-找回初心
  • Allegro如何打开或者关闭DFA规则设置操作指导
  • kind kubernetes 集群内如何通过 helm 部署定制化 Prometheus-Operator?
  • 流媒体付服务器 ZLMediaKit 学习记录
  • 2023年了还不会写软件测试简历吗,那就来看这里吧,怎么样才能更容易让HR看到你的简历
  • 第四阶段08-基于element-ui的vue2.0脚手架(续)
  • 数据库设计规范
  • 深入浅出PaddlePaddle函数——paddle.Tensor
  • docker删除已停止的容器
  • JS#1 引入方式和基础语法
  • 面了一个测试工程师,明显感觉他背了很多面试题...
  • C#生成缩略图
  • 算法 # SimHash 算法:文本相似度、文本去重、海量文本快速查询
  • Java程序设计-JSP程序设计-SSM校园二手交易系统
  • springBoot 消息转换器和自定义消息转换器
  • 机器学习笔记之流形模型——标准流模型基本介绍
  • MIT:只需一层RF传感器,就能为AR头显赋予“X光”穿透视力
  • 对 Dom 树的理解
  • 电商搜索入门
  • 4.3.1初阶数据结构(C语言)(无头不循环单链表)
  • 一文深度解读音视频行业技术发展历程
  • 面向对象拓展贴
  • Android仿QQ未读消息拖拽粘性效果
  • Linux 打包压缩解压指令 gzip bzip2 tar
  • 系统升级丨分享返佣,助力商企实现低成本高转化营销
  • 机试代码模板
  • Java性能优化-垃圾回收算法-理解CMS回收器
  • Oracle11G的表空间数据文件大小限制问题处理
  • 计算机三级|网络技术|备考指南|网络系统结构与设计的基本原则|1
  • 基于 TI Sitara系列 AM64x核心板——程序自启动说明