专题要点:
- 数据结构:
- blockNum:块数
- eleNum:块中的元素范围
- table[]:统计第i个整数的个数
- block[]:统计每个块中元素个数
- 算法思想:通过累加块中元素个数block[i],快速定位第K大元素所在块号,在定位的块中遍历table[],快速找到第K大元素
- 注意:一个block块负责一个范围,在这个范围内遍历累加table[]并与K作比较
两种实现:
for循环
使用for循环,代码略显繁杂,要卡出当前block表示的元素
1 | int getKth(int K) |
while
1 | int getKth(int K) |