牛客网_华为机试:
描述
数据表记录包含表索引index和数值value(int范围的正整数),请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照index值升序进行输出。
提示:
0 <= index <= 11111111
1 <= value <= 100000
public class Ac { public static void main(String[] args) { Scanner in = new Scanner("27\n" + "8 46828\n" + "24 47153\n" + "3 93735\n" + "13 72600\n" + "4 44422\n" + "8 73704\n" + "12 52139\n" + "19 47649\n" + "21 10445\n" + "15 63369\n" + "20 48412\n" + "17 57017\n" + "18 9379\n" + "16 51964\n" + "19 70049\n" + "0 72000\n" + "25 38544\n" + "18 21967\n" + "24 90219\n" + "2 17950\n" + "3 51355\n" + "14 32107\n" + "25 81332\n" + "23 95607\n" + "10 69407\n" + "12 53131\n" + "19 87351"); // 注意 hasNext 和 hasNextLine 的区别 int sum = 0; Map<Integer, Integer> map = new TreeMap<>(); String index = ""; while (in.hasNextLine()) { // 注意 while 处理多个 case String s = in.nextLine(); String[] sp = s.split(" "); if(sp.length == 1) continue; if(map.get(Integer.parseInt(sp[0])) == null){ index = sp[0]; map.put(Integer.parseInt(sp[0]), Integer.parseInt(sp[1])); }else{ map.put(Integer.parseInt(sp[0]), map.get(Integer.parseInt(sp[0]))+ Integer.parseInt(sp[1])); } } for (Map.Entry<Integer, Integer> integerIntegerEntry : map.entrySet()) { System.out.println(integerIntegerEntry.getKey() + " " + integerIntegerEntry.getValue()); } } }