题解 | #合并表记录#

合并表记录

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

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        int[][] array = null;
        int linecnt = 1;
        int cnt = Integer.MAX_VALUE;
        int index;
        int v;
        String line;
        String[] lineArr;
        int fromIndex = 0;
        int[] temp;
        while (in.hasNextLine()) { // 注意 while 处理多个 case
            if (linecnt == 1) {
                cnt = in.nextInt();
                array = new int[cnt][];

            } else {
                line = in.nextLine();
                if ("".equals(line)) {
                    continue;
                }
                lineArr = line.split(" ");
                index = Integer.parseInt(lineArr[0]);

                if (index > array.length - 1) {
                    fromIndex = array.length - 1;
                } else {
                    fromIndex = index;
                }
                v = Integer.parseInt(lineArr[1]);

                for (int i = fromIndex; i >= 0; i--) {
                    temp = array[i];
                    if (temp == null) {
                        temp = new int[2];
                        temp[0] = index;
                        temp[1] = v;
                        array[i] = temp;
                        break;
                    }
                    if (temp[0] == index) {
                        temp[1] = temp[1] + v;
                        break;
                    } else {
                        temp[0] = temp[0] ^ index;
                        index = temp[0] ^ index;
                        temp[0] = temp[0] ^ index;
                        temp[1] = temp[1] ^ v;
                        v = temp[1] ^ v;
                        temp[1] = temp[1] ^ v;
                    }
                }
            }

            if (linecnt > cnt) {
                break;
            }

            linecnt ++;
        }

        for (int i = 0; i < array.length; i++) {
            if (array[i] != null) {
                System.out.println(array[i][0] + " " + array[i][1]);
            }
        }
    }
}

全部评论

相关推荐

预计下个星期就能开奖吧,哪位老哥来给个准信
华孝子爱信等:对接人上周说的是这周
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
11-20 19:57
已编辑
某大厂 golang工程师 23.0k*16.0, 2k房补,年终大概率能拿到
点赞 评论 收藏
分享
去B座二楼砸水泥地:不过也可以理解,这种应该没参加过秋招
点赞 评论 收藏
分享
拒绝无效加班的小师弟很中意你:求职意向没有,年龄、课程冗余信息可以删掉,需要提升项目经历。排版需要修改。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务