猿辅导二面

  • 介绍项目
  • Redis的基本数据结构,Set怎么实现的,跳表的插入删除查询时间复杂度
  • 一致性hash,作用是什么
  • 负载均衡算法有哪些
编程题:一个数组前半部分升序后半部分降序,查找最大值。(1、4、7、8、3、2)
public class Main {
    public static void main(String[] args) {
        int[] nums = {1,4,7,8,3,2};
        int i = 0, j = nums.length - 1;
        while(i <= j){
            int mid = (i + j) / 2;
            int left = 0, right = 0;
            if(mid - 1 >= 0){
                left = nums[mid - 1];
            }
            if(mid + 1 < nums.length){
                right = nums[mid + 1];
            }
            if(nums[mid] > left && nums[mid] > right){
                System.out.println(nums[mid]);
                break;
            }
            if(nums[mid] > left && nums[mid] < right){
                i = mid + 1;
            }else{
                j = mid - 1;
            }
        }
    }
}
编程题:节点取值0/1的二叉树,删除全部为0的叶子节点
private TreeNode solve(TreeNode root) {
    if (root == null){
        return null;
    }
    root.left = solve(root.left);
    root.right = solve(root.right);
    if (root.left == null && root.right == null && root.val == 0){
        return null;
    }
    return root;
}
第二题不太好写,不过面试官给了指导~
#猿辅导##笔试题目#
全部评论
面试质量很高
点赞 回复
分享
发布于 2019-08-27 10:30

相关推荐

1 32 评论
分享
牛客网
牛客企业服务