字节跳动笔试-过前三道,最后一道题目都没看明白。。。

第一道,刚开始也是只过了80%,最后要提交的时候灵机一动,题目说了肯定有答案,那么第一个肯定是答案。。。然后就全A了。。。
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[][] time = new int[n][2];
        int[] times = new int[n];
        for (int i = 0; i < n; i++) {
            time[i][0] = sc.nextInt();
            time[i][1] = sc.nextInt();
            times[i] = 60 * time[i][0] + time[i][1];
        }
        int m = sc.nextInt();
        int hour = sc.nextInt();
        int minute = sc.nextInt();
        int startTime = 60 * hour + minute;
        for (int i = n - 1; i >= 0; i--) {
            if (times[i] + m <= startTime) {
                System.out.println(time[i][0] + " " + time[i][1]);
                return;
            }
        }
        System.out.println(time[0][0] + " " + time[0][1]);
    }
第二题,
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int X = sc.nextInt();
        String string = sc.next();
        if (X == 0) {
            System.out.println(string);
            return;
        }

        int[] num = new int[string.length()];
        for (int i = 0; i < string.length(); i++) {
            num[i] = string.charAt(i) - '0';
        }
        int[] ret = new int[N];
        ret[0] = num[0];

        for (int i = 1; i < N; i++) {
                        // 这个时候不是由X个数进行异或生成的
            if (i < X) {
                ret[i] = num[i] ^ num[i - 1];
            } else {
                int t = X - 1;
                int temp = num[i];
                while (t > 0) {
                    temp = temp ^ ret[i - t];
                    t--;
                }
                ret[i] = temp;
            }
        }
        for (int i = 0; i < N; i++) {
            System.out.print(ret[i]);
        }
        System.out.println("");
    }                


第三道题目,原型应该是LeetCode上分糖果的题目,
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int[] array = new int[n];
        for (int i = 0; i < n; i++) {
            array[i] = sc.nextInt();
        }
        if (n == 0) {
            System.out.println(0);
        }
        if (n == 1) {
            System.out.println(100);
        }
        int result = f(array, n);
        System.out.println(result);
    }

    public static int f(int[] array, int n) {
        int nums[] = new int[n];
        nums[0] = 1;
        for (int i = 1; i < n; i++) {
            if (array[i] > array[i - 1]) {
                nums[i] = nums[i - 1] + 1;
            } else {
                nums[i] = 1;
            }
        }
        for (int i = n - 2; i >= 0; i--) {
            if (array[i] > array[i + 1] && nums[i] <= nums[i + 1]) {
                nums[i] = nums[i + 1] + 1;
            }
        }
        int count = 0;
        for (int i = 0; i < n; i++) {
            count += nums[i];
        }
        return count * 100;
    }

最后一道,题目都没看明白,感觉题目也说的不清楚,求大佬说说第四题。

#字节跳动##笔试题目#
全部评论
求个题啊
点赞 回复 分享
发布于 2019-08-11 22:45
同A三道
点赞 回复 分享
发布于 2019-08-11 22:41
请问,第三题的测试用例有说1 2 2的情况怎么处理么?
点赞 回复 分享
发布于 2019-08-11 22:19
第一题好机智呀
点赞 回复 分享
发布于 2019-08-11 22:14
大佬,第二题是怎么做的😂  可以讲讲吗
点赞 回复 分享
发布于 2019-08-11 22:06
最后一题就对了10%, 感觉它的意思像是数轴上找长度%3 = 0,1,2的线段的长度和? 求大佬解答
点赞 回复 分享
发布于 2019-08-11 22:01
好机智😂
点赞 回复 分享
发布于 2019-08-11 21:21
代码比较乱
点赞 回复 分享
发布于 2019-08-11 21:20

相关推荐

评论
3
16
分享

创作者周榜

更多
牛客网
牛客企业服务