题目:https://leetcode.cn/contest/biweekly-contest-84/problems/merge-similar-items/
大佬代码:
class Solution {
public List> mergeSimilarItems(int[][] items1, int[][] items2) {
TreeMap map = new TreeMap<>();
for (int[] item : items1) {
map.put(item[0], item[1]);
}
for (int[] item : items2) {
map.put(item[0], map.getOrDefault(item[0], 0) + item[1]);
}
ArrayList> list = new ArrayList<>();
for (Map.Entry entry : map.entrySet()) {
list.add(List.of(entry.getKey(), entry.getValue()));
}
return list;
}
}
我的提交:
map.remove() map.getKey() map.getValue() map按照key升序排序 map的遍历
class Solution {
public List> mergeSimilarItems(int[][] items1, int[][] items2) {
Map map1 = new HashMap<>();
Map map2 = new HashMap<>();
int len1 = items1.length, len2 = items2.length;
for (int i = 0; i < len1; i++) {
map1.put(items1[i][0], items1[i][1]);
}
for (int i = 0; i < len2; i++) {
map2.put(items2[i][0], items2[i][1]);
}
Map result = new HashMap<>();
if (len1 >= len2) {
result = getA(map1, map2);
} else {
result = getA(map2, map1);
}
List> list = new ArrayList<>();
for (Map.Entry entry : result.entrySet()) {
List a = new ArrayList<>();
a.add(entry.getKey());
a.add(entry.getValue());
list.add(a);
}
return list;
}
public static Map getA(Map max, Map min){
Map map = new HashMap<>();
for (Map.Entry entry : max.entrySet()) {
if (min.containsKey(entry.getKey())) {
int total = entry.getValue() + min.get(entry.getKey());
map.put(entry.getKey(), total);
min.remove(entry.getKey());
} else {
map.put(entry.getKey(), entry.getValue());
}
if (!min.isEmpty()){
for (Map.Entry entry1 : min.entrySet()) {
map.put(entry1.getKey(),entry1.getValue());
}
}
}
// 根据key升序排序
Map collect = map.entrySet().stream().sorted(Map.Entry.comparingByKey()).collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (oldVal, newVal) -> oldVal, LinkedHashMap::new));
return collect;
}
}



