描述
数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,随后按照索引值的大小从小到大依次输出。
输入描述:
第一行输入一个整数 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输出所有的值即可。