Skip to content

困难题:二分查找+乘法表中的第k小的数字

668. 乘法表中第k小的数

一般来讲“第k大”问题会使用优先队列(简单、中等)或者二分(困难)。

本质上来说乘法表中第k小的数字,意思就是前面由k个小于等于它的数;

​ 1 2 3 4 5

​ 2 4 6 8 10

​ 3 6 9 12 15

对于上面的乘法表,

1:1个数小于等于它;

2: 3个数小于等于它;

3:5个数小于等于它;

4:7个数小于等于它;

x: 有j个数小于等于它

依次类推,我们对1, 3, 5, 7....j进行二分查找,找到对应的x就行了。

真正的问题在于如何使用x,算出j:

例如x=4, 在这个乘法表内

1 2 3 4 5

2 4 6 8 10

3 6 9 12 15 $$ j=\sum_{i=1}^{m} \min \left(\left[\frac{x}{i}\right\rfloor, n\right) $$