Input: items1 =[[1,1],[4,5],[3,8]], items2 =[[3,1],[1,5]]Output: [[1,6],[3,9],[4,5]]Explanation:
The item with value =1 occurs in items1 with weight =1 and in items2 with weight =5, total weight =1+5=6.The item with value =3 occurs in items1 with weight =8 and in items2 with weight =1, total weight =8+1=9.The item with value =4 occurs in items1 with weight =5, total weight =5.Therefore, we return[[1,6],[3,9],[4,5]].
Input: items1 =[[1,1],[3,2],[2,3]], items2 =[[2,1],[3,2],[1,3]]Output: [[1,4],[2,4],[3,4]]Explanation:
The item with value =1 occurs in items1 with weight =1 and in items2 with weight =3, total weight =1+3=4.The item with value =2 occurs in items1 with weight =3 and in items2 with weight =1, total weight =3+1=4.The item with value =3 occurs in items1 with weight =2 and in items2 with weight =2, total weight =2+2=4.Therefore, we return[[1,4],[2,4],[3,4]].
Input: items1 =[[1,3],[2,2]], items2 =[[7,1],[2,2],[1,4]]Output: [[1,7],[2,4],[7,1]]Explanation: The item with value =1 occurs in items1 with weight =3 and in items2 with weight =4, total weight =3+4=7.The item with value =2 occurs in items1 with weight =2 and in items2 with weight =2, total weight =2+2=4.The item with value =7 occurs in items2 with weight =1, total weight =1.Therefore, we return[[1,7],[2,4],[7,1]].
classSolution {
public List<List<Integer>>mergeSimilarItems(int[][] items1, int[][] items2) {
Map<Integer, Integer> mp =new HashMap<>();
for (int[] v : items1) mp.put(v[0], mp.getOrDefault(v[0], 0) + v[1]);
for (int[] v : items2) mp.put(v[0], mp.getOrDefault(v[0], 0) + v[1]);
List<List<Integer>> ans =new ArrayList<>();
List<Integer> keys =new ArrayList<>(mp.keySet());
Collections.sort(keys);
for (int k : keys) ans.add(Arrays.asList(k, mp.get(k)));
return ans;
}
}
1
2
3
4
5
6
7
8
classSolution {
funmergeSimilarItems(items1: Array<IntArray>, items2: Array<IntArray>): List<List<Int>> {
val mp = mutableMapOf<Int, Int>()
for (v in items1) mp[v[0]] = mp.getOrDefault(v[0], 0) + v[1]
for (v in items2) mp[v[0]] = mp.getOrDefault(v[0], 0) + v[1]
return mp.keys.sorted().map { listOf(it, mp[it]!!) }
}
}
1
2
3
4
5
defmerge_similar_items(items1: list[list[int]], items2: list[list[int]]) -> list[list[int]]:
mp = {}
for v, w in items1 + items2:
mp[v] = mp.get(v, 0) + w
return sorted([[v, w] for v, w in mp.items()])
1
2
3
4
5
6
7
8
9
10
impl Solution {
pubfnmerge_similar_items(items1: Vec<Vec<i32>>, items2: Vec<Vec<i32>>) -> Vec<Vec<i32>> {
use std::collections::BTreeMap;
letmut mp = BTreeMap::new();
for v in items1.iter().chain(items2.iter()) {
*mp.entry(v[0]).or_insert(0) += v[1];
}
mp.into_iter().map(|(v, w)|vec![v, w]).collect()
}
}