思路
中位数是最优解
相关题目
- 一维拓展二维:3167. 星星还是树
- 拓展n维:模拟退火算法
拓展知识
- 将第n个数放在正确的位置上nth_element
nth_element(nums.begin(),nums.begin()+k,nums.end(),greater<int>());
第k大的数- 位运算 i>>1
- for() shift 9 0,快速退出括号
nth_element拓展
- 2021/2/3 lc 480.滑动窗口中位数
- 直接将求完的nth_element保存,不要连续求两次
若需要将两个数据放在正确的位置,先对后面的数求nth_element,再求前面的nth_element(nums.begin(),nums.begin()+n+1,nums.end());
nth_element(nums.begin(),nums.begin()+n,nums.end());
先排前面再排后面,会导致前面已经排好序的位置被打乱。
1 |
|
写法1 $O(nlogn)$
1 |
|
写法2 $O(nlogn)$
1 |
|
写法3 $O(n)$
1 |
|