描述
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
提示:
0 <= index <= 11111111
1 <= value <= 100000
输入描述:
先输入键值对的个数n(1 <= n <= 500)
接下来n行每行输入成对的index和value值,以空格隔开
输出描述:
输出合并后的键值对(多行)
示例1
输入:
4 0 1 0 2 1 2 3 4
复制输出:
0 3 1 2 3 4
复制
示例2
输入:
3 0 1 0 2 8 9
复制输出:
0 3 8 9
我的解题思路
import java.util.*;
import java.lang.*;
public class Main{
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int len = Integer.valueOf(sc.nextLine());
Map<Integer,Integer> map = new HashMap<Integer,Integer>();
for(int i=0;i<len;i++){
String str = sc.nextLine();
String[] strs = str.split(" ");
Integer key = Integer.valueOf(strs[0]);
Integer value = Integer.valueOf(strs[1]);
Integer valueNew = 0;
if(map.containsKey(key)){
Integer num = map.get(key);
valueNew = num + value;
}else{
valueNew = value;
}
map.put(key,valueNew);
}
ArrayList<Integer> list = new ArrayList<>(map.keySet());
Collections.sort(list,new Comparator<Integer>(){
@Override
public int compare(Integer s1,Integer s2){
return s1-s2;
}
});
for(int i=0;i<list.size();i++){
Integer key = list.get(i);
System.out.println(key+" "+map.get(key));
}
}
}