题解 | #合并表记录#

合并表记录

https://www.nowcoder.com/practice/de044e89123f4a7482bd2b214a685201

import java.util.LinkedList;
import java.util.List;
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        in.useDelimiter("\n");
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNext()) { // 注意 while 处理多个 case
            int count = in.nextInt();
            List<String> list = new LinkedList<>();
            outer:
            for(int i = 1; i <= count; i ++) {
                String key_value = in.next();
                String[] split = key_value.split(" ");
                int key = Integer.valueOf(split[0]);
                int value = Integer.valueOf(split[1]);
                for(int j = 0; j < list.size(); j ++) {
                    String s = list.get(j);
                    String[] split1 = s.split(" ");
                    int currKey = Integer.valueOf(split1[0]);
                    int currVal = Integer.valueOf(split1[1]);

                    if(currKey == key) {
                        list.set(j, key + " " + (currVal + value) );
                        continue outer;
                    }
                }
                list.add(key + " " + value);
            }
            list.sort(((o1, o2) -> Integer.valueOf(o1.split(" ")[0]) - Integer.parseInt(o2.split(" ")[0])));
            for(String s : list) {
                System.out.println(s);
            }
        }
    }
}

全部评论
用map会有效率问题,这个依然不是最优解,但是先通过再说,逻辑性强一点
点赞 回复 分享
发布于 2023-07-21 04:38 江苏

相关推荐

06-27 18:53
门头沟学院 Java
这样才知道自己不适合搞代码,考公去咯
码农索隆:好家伙,我这干的挺好,我老妈还劝我考公呢
点赞 评论 收藏
分享
程序员小白条:你是沟通了900个,不是投了900份简历,你能投900份,意味着对面都要回复你900次,你早就找到实习了,没亮点就是这样的,别局限地区,时间投的也要早,现在都要7月了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务