[编程题] 打印出失序的线程ID--字节跳动笔试题

打印出失序的线程ID

题目描述

输入一个正整数n.表示接下来有n行数字,每行一个数字(不重复,可能无序),表示线程id,输出未出现的失序的线程ID

n的大小是小于等于2的32次方

示例

例如1:

输入(输入的线程ID不一定有序)
5
2
3
4
5
6
输出:
1

例如2:

输入:
4
1
2
3
4
输出:
5

Java代码

package ncompanydemos.p2_bytedance;

import java.util.Arrays;
import java.util.Scanner;

/**
 * @author jiyongjia
 * @create 2020/7/4 - 14:26
 * @descp: 输入一个数n.表示接下来有n行数字,每行一个数字,表示线程id,输出未出现的失序的线程ID
 */
public class Exam01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int total = scanner.nextInt();

        int[] arr = new int[total];
        int cur;
        for (int i = 0; i < total; i++) {
            cur=scanner.nextInt();
            arr[i] = cur;
        }
        //调用
        int solve = solve(arr);
        System.out.println(solve);
    }

    public static int solve(int[] arr){
        //对数组排序、
        Arrays.sort(arr);

        //边界判断

        if(arr.length!=1 && arr[0]!=1){
            return 1;
        }

        int cur=0;
        int next=0;
        for (int i = 0; i < arr.length-1; i++) {
            cur = arr[i];
            next = arr[i+1];
            if(next-cur==1){
                continue;
            }else{
                return ++cur;
            }
        }

        //边界判断
        if(arr[arr.length-1]-arr[arr.length-2]==1){
            return ++arr[arr.length-1];
        }else{
            return ++arr[arr.length-2];
        }

    }
}

测试输出

测试1:

输入:
5
2
3
1
6
4
输出:
5

测试2:

输入:
5
1
2
3
4
5
输出:
6

测试3:

image-20200704145811307

posted @ 2020-07-04 15:02  北鼻coder  阅读(263)  评论(2编辑  收藏  举报