
描述
数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,随后按照索引值的大小从小到大依次输出。
输入描述:
第一行输入一个整数 n(1≦n≦500) 代表数据表的记录数。
此后 n 行,第 i 行输入两个整数 xi,yi(0≦xi≦11 111 111; 1≦yi≦105) 代表数据表的第 i 条记录。
此后 n 行,第 i 行输入两个整数 xi,yi(0≦xi≦11 111 111; 1≦yi≦105) 代表数据表的第 i 条记录。
输出描述:
输出若干行,第 i 行输出两个整数,代表合并后数据表中第 i 条记录的索引和数值。
解法一(java):
import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int num = in.nextInt();
        Map<Integer,Integer> map = new TreeMap<>();
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            int a = in.nextInt();
            int b = in.nextInt();
            if (map.containsKey(a)) {
                map.put(a,map.get(a)+b);
            } else {
                map.put(a,b);
            }
        }
        for(Integer key:map.keySet()){
            System.out.print(key+" "+map.get(key));
            System.out.println();
        }
    }
}
思路:使用一个TreeMap,每次输入判断map是否存在相同的key,如果存在那就就在原来的基础上加上它的值,要是不存在就设置它的值,然后遍历map输出所有的值即可。