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


#哔哩哔哩##笔试##笔经##秋招##校招#
全部评论
23届秋招b站面经怎么都没有,是有什么保密协议吗
2 回复 分享
发布于 2022-09-23 16:08 湖北
hi~同学,秋招遇“寒气”,牛客送温暖啦!23届秋招笔面经有奖征集中,参与就得牛客会员7天免费体验,最高赢300元京东卡!戳我去看>>>https://www.nowcoder.com/link/zhengjipinglun
点赞 回复 分享
发布于 2022-09-22 10:44 北京
楼主你好,第二题我有个问题如果两个颜色的序列分别为1,2,3,4 和 -4,-3,-2,-1,那输出应该是-1吧
点赞 回复 分享
发布于 2022-09-20 20:44 陕西

相关推荐

评论
2
3
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务