题解 | #合并表记录#
合并表记录
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()); } } } }