哔哩哔哩9.4算法岗笔试编程题

这次算法岗出题太简单了, 让我这种菜鸡也体会到了ak的感受

第一题 最长回文子串 lc 5 原题

第二题 最大子序和 lc 53 原题

第三题 俄罗斯套娃 模拟题 没什么难度 按题意直接写就行
一开始java写只能过80% 后来改用python抄一遍就ac了...

n = int(input())
line = input().strip().split()
nums = [int(x) for x in line]
res = 0
size = len(nums)
while True:
    for i in range(size-2, -1, -1):
        if nums[i] > nums[i+1]:
            nums[i+1] = 0
    nums = [num for num in nums if num != 0]
    if size == len(nums):
        break
    else:
        res += 1
        size = len(nums)
print(res)

附上java通过80%代码 编译环境提示数组下标越界 原因不明 希望大神能够解答下java坑在什么地方

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            list.add(sc.nextInt());
        }
        if (n == 0) {
            System.out.println(0);
            return;
        }
        int res = 0;
        int size = list.size();
        while (true) {
            list = operate(list);
            if (list.size() != size) {
                res++;
                size = list.size();
            } else {
                break;
            }
        }
        System.out.println(res);
    }
    static ArrayList<Integer> operate(ArrayList<Integer> list){
        for (int i = list.size()-2; i >= 0 ; i--) {
            if (list.get(i+1) < list.get(i)) list.set(i+1, 0);
        }
        ArrayList<Integer> res = new ArrayList<>();
        for (int i = 0; i < list.size(); i++) {
            if (list.get(i) != 0) res.add(list.get(i));
        }
        return res;
    }
}
#笔试题目##哔哩哔哩#
全部评论
第二题是不是有什么坑。lc上通过了,笔试提交就只有40%了😥
点赞
送花
回复 分享
发布于 2020-09-04 21:47
大佬9.4笔试完之后 收到面试通知了吗?
点赞
送花
回复 分享
发布于 2020-09-09 15:19
秋招专场
校招火热招聘中
官网直投

相关推荐

3 4 评论
分享
牛客网
牛客企业服务