几乎每一个人都用 乘法表。但是你能在乘法表中快速找到第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).
对于乘法表中的数字 xx,它是乘法表中第几小的数字?
class Solution {
public int findKthNumber(int m, int n, int k) {
int left = 1, right = m * n;
while (left < right) {
int x = left + (right - left) / 2;
int count = x / n * n;
for (int i = x / n + 1; i <= m; ++i) {
count += x / i;
}
if (count >= k) {
right = x;
} else {
left = x + 1;
}
}
return left;
}
}
。
刷题进行时-二分法-668. 乘法表中第k小的数
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
相关阅读更多精彩内容
- 给定高度m 、宽度n 的一张 m * n的乘法表,以及正整数k,你需要返回表中第k 小的数字。 这道题首先想到的是...
- 1.题目描述 668. 乘法表中第k小的数[https://leetcode.cn/problems/kth-sm...
- 668 Kth Smallest Number in Multiplication Table 乘法表中第k小的数...