int findKthNumber(int m, int n, int k) {
int left=1*1;
int right=m*n;
while(left<right){
int mid=(left+right)>>1;
int count=findNum(mid,m,n);
if(count<k){
left=mid+1;
}else{
right=mid;
}
}
return right;
}
int findNum(int val,int m,int n){
int i=m;
int j=1;
int sum=0;
while(i>0 && j<=n){
if(i*j <= val){
sum += i;
j++;
}else{
i--;
}
}
return sum;
}
给定m * n乘法表的高度m和长度n以及正整数k,则需要返回此表中第k个最小的数字。
最新推荐文章于 2022-05-18 01:06:21 发布