首页 > 哔哩哔哩9.4算法岗笔试编程题
头像
最爱数学的人
编辑于 2020-09-04 23:23
+ 关注

哔哩哔哩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;
    }
}

全部评论

(2) 回帖
加载中...
话题 回帖

推荐话题

相关热帖

历年真题 真题热练榜 24小时
技术(软件)/信息技术类
查看全部

近期精华帖

热门推荐