牛客华为算法-HJ8 合并表记录

我爱海鲸 2025-04-18 12:27:59 暂无标签

简介华为OD

合并表记录_牛客题霸_牛客网

描述

数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,随后按照索引值的大小从小到大依次输出。

输入描述:

第一行输入一个整数 n(1≦n≦500) 代表数据表的记录数。
此后 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输出所有的值即可。

 

你好:我的2025