• LeetCode简单题之合并相似的物品


    题目

    给你两个二维整数数组 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 都是 唯一的 。

    来源:力扣(LeetCode)

    解题思路

      将两个数组做成字典,其中每个数组中元素的第一个位置作为key第二个位置作为value,这样就可以直接取两个字典的并集,将存在的value都加在一起即可。

    class Solution:
        def mergeSimilarItems(self, items1: List[List[int]], items2: List[List[int]]) -> List[List[int]]:
            items1,items2=dict(items1),dict(items2)
            for i in items1.keys()|items2.keys():
                items1[i]=items1.get(i,0)+items2.get(i,0)
            return sorted(list(items1.items()))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

  • 相关阅读:
    【MySQL】21-MySQL之增删改
    Nginx SSL证书更新及密码套件更新
    echarts-直角坐标系通用配置
    Vue | Vue.js 实现过渡动画
    AUTOSAR从入门到精通番外篇(八)-C语言常用技巧50个
    Mac 安装 protobuf 和Android Studio 使用
    2 资源关系 | 到底什么是”局“-- 清华宁向东的管理学课总结
    Java:如何去优雅地优化接口
    C++并发编程实战 第三章 在线程间共享数据
    【红日靶场】vulnstack4-完整渗透过程
  • 原文地址:https://blog.csdn.net/qq_18560985/article/details/126249436