题解 | #合并表记录#
合并表记录
https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201
解题思路:
- 看到关键词“索引/数值/键值对”,立马想到Map对象;
- 看到关键词“升序”,立马想到TreeMap对象。Map包含HashMap,LinkedHashMap,TreeMap常用实现类,其中HashMap无序,TreeMap是有序的。
注意点:
- map.getOrDefault(key,0)方法非常有用,如果查询不到key直接使用默认值0。如果使用map.get(key)的话,还需要判断map中是否包含key;
- Map对象for-each遍历条件的写法,Map.Entry<Integer, Integer> entry : map.entrySet()。
import java.util.Scanner;
import java.util.Map;
import java.util.TreeMap;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNextInt()) { // 注意 while 处理多个 case
int count = in.nextInt();
Map<Integer, Integer> map = new TreeMap<>();
for(int i=0; i<count; i++){
int key = in.nextInt();
int value = in.nextInt();
map.put(key, value+map.getOrDefault(key,0));
}
for(Map.Entry<Integer, Integer> entry : map.entrySet()){
System.out.println(entry.getKey()+" "+entry.getValue());
}
}
}
}

上海得物信息集团有限公司公司福利 1236人发布