leetcode 668. Kth Smallest Number in Multiplication Table 有序矩阵搜索 + 右上角二分搜索
2017-12-22 12:04
453 查看
Nearly every one have used the Multiplication Table. But could you find out the k-th smallest number quickly from the multiplication table?
Given the height m and the length n of a m * n Multiplication Table, and a positive integer k, you need to return the k-th smallest number in this table.
Example 1:
Input: m = 3, n = 3, k = 5
Output:
Explanation:
The Multiplication Table:
1 2 3
2 4 6
3 6 9
The 5-th smallest number is 3 (1, 2, 2, 3, 3).
Example 2:
Input: m = 2, n = 3, k = 6
Output:
Explanation:
The Multiplication Table:
1 2 3
2 4 6
The 6-th smallest number is 6 (1, 2, 2, 3, 4, 6).
Note:
The m and n will be in the range [1, 30000].
The k will be in the range [1, m * n]
本题题意就是在一个m*n的乘法表,然后要求找到第k小的数字
建议和leetcode 240. Search a 2D Matrix II 矩阵搜索 + 右上角搜索 和 leetcode 378. Kth Smallest Element in a Sorted Matrix一起学习
代码如下:
Given the height m and the length n of a m * n Multiplication Table, and a positive integer k, you need to return the k-th smallest number in this table.
Example 1:
Input: m = 3, n = 3, k = 5
Output:
Explanation:
The Multiplication Table:
1 2 3
2 4 6
3 6 9
The 5-th smallest number is 3 (1, 2, 2, 3, 3).
Example 2:
Input: m = 2, n = 3, k = 6
Output:
Explanation:
The Multiplication Table:
1 2 3
2 4 6
The 6-th smallest number is 6 (1, 2, 2, 3, 4, 6).
Note:
The m and n will be in the range [1, 30000].
The k will be in the range [1, m * n]
本题题意就是在一个m*n的乘法表,然后要求找到第k小的数字
建议和leetcode 240. Search a 2D Matrix II 矩阵搜索 + 右上角搜索 和 leetcode 378. Kth Smallest Element in a Sorted Matrix一起学习
代码如下:
#include <iostream> #include <vector> #include <map> #include <unordered_map> #include <set> #include <unordered_set> #include <queue> #include <stack> #include <string> #include <climits> #include <algorithm> #include <sstream> #include <functional> #include <bitset> #include <numeric> #include <cmath> #include <regex> #include <iomanip> #include <cstdlib> #include <ctime> using namespace std; #include <iostream> #include <vector> #include <map> #include <unordered_map> #include <set> #include <unordered_set> #include <queue> #include <stack> #include <string> #include <climits> #include <algorithm> #include <sstream> #include <functional> #include <bitset> #include <numeric> #include <cmath> #include <regex> #include <iomanip> #include <cstdlib> #include <ctime> using namespace std; class Solution { public: int findKthNumber(int m, int n, int k) { int left = 1, right = m*n; while (left < right) { int mid = (right - left) / 2 + left; int count = calaCount(m, n, mid); if (count < k) left = mid + 1; else right = mid; } return left; } int calaCount(int row, int col, int target) { int res = 0; int i = 1, j = col; while (i <= row && j >= 1) { if (i*j <= target) { res += j; i++; } else j--; } return res; } };
相关文章推荐
- LeetCode hard 668. Kth Smallest Number in Multiplication Table(二分答案,一次过了,好开心,哈哈哈哈)
- leetcode题解-668. Kth Smallest Number in Multiplication Table
- [leetcode]668. Kth Smallest Number in Multiplication Table
- leetcode_668. Kth Smallest Number in Multiplication Table ? 待解决
- [Leetcode] 668. Kth Smallest Number in Multiplication Table 解题报告
- LeetCode 668. Kth Smallest Number in Multiplication Table
- 668. Kth Smallest Number in Multiplication Table
- LeetCode 668: Kth Smallest Number in Multiplication Table
- leetcode 378. Kth Smallest Element in a Sorted Matrix有序矩阵寻找第K小数+二分查找
- [LeetCode] Kth Smallest Number in Multiplication Table 乘法表中的第K小的数字
- 668. Kth Smallest Number in Multiplication Table
- 668. Kth Smallest Number in Multiplication Table
- [leetcode] 668 Kth Smallest Number in Multiplication Table
- [LeetCode] Kth Smallest Element in a Sorted Matrix 有序矩阵中第K小的元素
- Kth Smallest Number in Multiplication Table
- [LintCode] Kth Smallest Number in Sorted Matrix 有序矩阵中第K小的数字
- 668. Kth Smallest Number in Multiplication Table
- 668[Hard]:Kth Smallest Number in Multiplication Table
- leetcode 74. Search a 2D Matrix-矩阵搜索|二分查找
- 【Leetcode】374. Guess Number Higher or Lower【二分搜索】