蓝湖一面凉经
8.17 蓝湖一面
50 min,凉凉
自我介绍
手撕代码:
-
给你一副去掉大小王的扑克,扑克有52张,扑克只有黑色和红色,黑色和红色各26张。抽出n张,求黑色 - 红色的期望
答案:0
思路:模拟这个过程。黑色 - 红色 的范围是 [-m,m]。求出每个概率,再与值相乘即可。
离散期望求得方式:sum(x * p)
-
给你一个二维数组,求前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; } }
八股文:
-
数据库,NoSQL会吗?(不会
-
简单介绍一下MySQL的InnoDB?
-
ACID?隔离性主要通过什么实现?
-
介绍一下ElasticSearch的倒排索引?
-
设计模式会吗?(不会