当前位置: 首页 > 面试经验 >

9.20 B站Java开发笔试

优质
小牛编辑
101浏览
2023-03-28

9.20 B站Java开发笔试

选择10 + 编程2

笔试很简单,应该没hc了。。

选择题问到了split和indexOf分割字符串的效率问题,亲测indexOf的效率高于split

编程
T1 给出一个链表,可以进行删除操作,使得相邻节点和为奇数,并且链表长度尽可能大。
public ListNode longestList (ListNode head) {
    ListNode p = head;
    while (p != null && p.next != null) {
        if (p.val % 2 == 0) {
            while (p.next != null && p.next.val % 2 == 0) {
                p.next = p.next.next;
            }
        }else {
            while (p.next != null && p.next.val % 2 != 0) {
                p.next = p.next.next;
            }
        }
        p = p.next;
    }
    return head;
}
思路:可以看出整个链表必须要 奇 偶 奇 偶 这样子分布,只要删除相邻重复的即可。

T2 从两个数组里选数字,使得乘积最大
public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    int n = Integer.parseInt(sc.nextLine());
    String[] info = sc.nextLine().split(" ");
    String color = sc.nextLine();
    ArrayList<Integer> redList = new ArrayList<>();
    ArrayList<Integer> blueList = new ArrayList<>();
    for (int i = 0; i < n; i++) {
        if (color.charAt(i) == 'B') {
            blueList.add(Integer.parseInt(info[i]));
        }else {
            redList.add(Integer.parseInt(info[i]));
        }
    }
    redList.sort(null);
    blueList.sort(null);
    long max = Math.max(((long) redList.get(0) * blueList.get(0)),((long) redList.get(redList.size() - 1) * blueList.get(blueList.size() - 1)));
    System.out.println(max);
}
思路:主要就是有负数的情况,只需要排序后取Math.max(头 * 头, 尾 * 尾)即可,如果使用int只能通过60+,使用long就能ac


#哔哩哔哩##笔试##笔经##秋招##校招#
 类似资料: