哔哩哔哩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;
}
} #笔试题目##哔哩哔哩#