Back to all solutions
#2363 - Merge Similar Items
Problem Description
You are given two 2D integer arrays, items1 and items2, representing two sets of items.
Each array items has the following properties:
- items[i] = [valuei, weighti] where valuei represents the value and weighti represents the weight of the ith item.
- The value of each item in items is unique.
Return a 2D integer array ret where ret[i] = [valuei, weighti], with weighti being the sum of weights of all items with value valuei.
Note: ret should be returned in ascending order by value.
Solution
/**
* @param {number[][]} items1
* @param {number[][]} items2
* @return {number[][]}
*/
var mergeSimilarItems = function(items1, items2) {
const map = new Map();
for (const [value, weight] of items1) {
map.set(value, (map.get(value) || 0) + weight);
}
for (const [value, weight] of items2) {
map.set(value, (map.get(value) || 0) + weight);
}
const merged = [];
for (const [value, weight] of map) {
merged.push([value, weight]);
}
return merged.sort((a, b) => a[0] - b[0]);
};