题目地址:
https://leetcode.com/problems/merge-similar-items/description/
给定两个数组,里面的元素都是 ( k , v ) (k,v) (k,v)表示物品 k k k有 v v v个,要求汇总每个物品总共有多少个,并且按照物品的 k k k值从小到大返回。
代码如下:
class Solution {
public:
vector<vector<int>> mergeSimilarItems(vector<vector<int>>& i1,
vector<vector<int>>& i2) {
map<int, int> mp;
for (auto& v : i1) mp[v[0]] += v[1];
for (auto& v : i2) mp[v[0]] += v[1];
vector<vector<int>> res;
for (auto& [k, v] : mp) res.push_back({k, v});
return res;
}
};
时间复杂度 O ( n log n ) O(n\log n) O(nlogn), n n n为物品种类数,空间 O ( n ) O(n) O(n)。