首页 > 蓝湖一面凉经
头像
heituiiiii
编辑于 2021-08-18 18:01
+ 关注

蓝湖一面凉经

8.17 蓝湖一面

50 min,凉凉

自我介绍

手撕代码:

  1. 给你一副去掉大小王的扑克,扑克有52张,扑克只有黑色和红色,黑色和红色各26张。抽出n张,求黑色 - 红色的期望

    答案:0

    思路:模拟这个过程。黑色 - 红色 的范围是 [-m,m]。求出每个概率,再与值相乘即可。

    离散期望求得方式:sum(x * p)

    image-20210817163714632

  2. 给你一个二维数组,求前K大的数

    思路:快排变形。215. 数组中的第K个最大元素

    时间:$O(N)$,但找pivot的时候需要引入随机化
public class test {
    public static void main(String[] args) {
        test test = new test();
        int[] nums = {200,5,10,15,40,32,100};
        int K = 2;

        System.out.println(Arrays.toString(test.solution(nums, K)));
    }

    public int[] solution(int[] nums, int K) {
        quickSort(nums, 0, nums.length - 1, K);
        return Arrays.copyOfRange(nums, nums.length - K, nums.length);
    }

    private void quickSort(int[] nums, int left, int right, int K) {
        int mid = patition(nums, left, right);
        if (mid == nums.length - K) {
            return;
        } else if (mid > nums.length - K) {
            quickSort(nums, 0, mid, K);
        } else {
            quickSort(nums, mid + 1, right, K);
        }
    }

    private int patition(int[] nums, int left, int right) {
        int p1 = left;
        int p2 = right;
        int pivot = nums[right];
        while (p1 < p2) {
            while (p1 < p2 && nums[p1] <= pivot) {
                p1++;
            }
            while (p1 < p2 && nums[p2] >= pivot) {
                p2--;
            }
            swap(nums, p1, p2);
        }
        swap(nums, p1, right);
        return p1;
    }

    private void swap(int[] nums, int i, int j) {
        int temp = nums[i];
        nums[i] = nums[j];
        nums[j] = temp;
    }
}

八股文:
  1. 数据库,NoSQL会吗?(不会

  2. 简单介绍一下MySQL的InnoDB?

  3. ACID?隔离性主要通过什么实现?

  4. 介绍一下ElasticSearch的倒排索引?

  5. 设计模式会吗?(不会

更多模拟面试

全部评论

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

推荐话题

相关热帖

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

热门推荐