题目
几乎每一个人都用 乘法表。但是你能在乘法表中快速找到第k小的数字吗?
给定高度m 、宽度n 的一张 m * n的乘法表,以及正整数k,你需要返回表中第k 小的数字。...例 1:
输入: m = 3, n = 3, k = 5
输出: 3
解释:
乘法表:
1 2 3
2 4 6
3 6 9
第5小的数字是 3 (1, 2, 2, 3, 3)....例 2:
输入: m = 2, n = 3, k = 6
输出: 6
解释:
乘法表:
1 2 3
2 4 6
第6小的数字是 6 (1, 2, 2, 3, 4, 6)....分享巧克力(极小极大化 二分查找)
m*n 的范围接近 10^9 ,O(mn) 以上时间复杂度的算法都会超时
考虑二分查找,L = 1, R = m*n, 选取mid,检查 的数有 k 个吗...mid+1;
}
return ans;
}
bool ok(int m, int n, int mid, int k)
{ // 检查每一行