leetcode668+乘法表第K小的數字,使用最大堆或者二分
阿新 • • 發佈:2018-11-09
https://leetcode.com/problems/kth-smallest-number-in-multiplication-table/description/
class Solution { public: int findKthNumber(int m, int n, int k) { if(m<n) swap(m, n); int left = 1, right= k; while (left!=right) { int x =0, mid = (left+right)/2; for(int i=1; i<=n&&i<=mid; i++){ if(mid/i<m) x+=(mid/i); else x+=m; } if(x>=k) right = mid; else left = mid+1; } for(;left>0; left--){ for(int i=1; i<=n; i++){ if(left%i==0&&left/i<=m) return left; } } } };