2363.合并相似的物品
链接:2363.合并相似的物品
难度:Easy
标签:数组、哈希表、有序集合、排序
简介:请你返回一个二维数组 ret,其中 ret[i] = [valuei, weighti], weighti 是所有价值为 valuei 物品的 重量之和 。
题解 1 - python
- 编辑时间:2023-02-28
- 执行用时:36ms
- 内存消耗:15.5MB
- 编程语言:python
- 解法介绍:同上。
class Solution:
    def mergeSimilarItems(self, items1: List[List[int]], items2: List[List[int]]) -> List[List[int]]:
        l = [0] * 1005
        for [k, v] in items1:
            l[k] += v
        for [k, v] in items2:
            l[k] += v
        res = []
        for i in range(1005):
            if l[i]:
                res.append([i, l[i]])
        return res
题解 2 - rust
- 编辑时间:2023-02-28
- 执行用时:4ms
- 内存消耗:2.3MB
- 编程语言:rust
- 解法介绍:同上。
impl Solution {
    pub fn merge_similar_items(items1: Vec<Vec<i32>>, items2: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
        let mut m = std::collections::HashMap::<i32, i32>::new();
        for item in items1 {
            let v = m.entry(item[0]).or_insert(0);
            *v += item[1];
        }
        for item in items2 {
            let v = m.entry(item[0]).or_insert(0);
            *v += item[1];
        }
        let mut res = m
            .into_iter()
            .map(|(k, v)| vec![k, v])
            .collect::<Vec<Vec<i32>>>();
        res.sort_by_key(|item| item[0]);
        res
    }
}
题解 3 - cpp
- 编辑时间:2023-02-28
- 执行用时:24ms
- 内存消耗:6.4MB
- 编程语言:cpp
- 解法介绍:遍历。
class Solution {
public:
    vector<vector<int>> mergeSimilarItems(vector<vector<int>>& items1, vector<vector<int>>& items2) {
        map<int, int> m;
        for (auto &item : items1) m[item[0]] += item[1];
        for (auto &item : items2) m[item[0]] += item[1];
        vector<vector<int>> res;
        for (auto &item : m) res.push_back({ item.first, item.second });
        return res;
    }
};