乘法表中第K小的数——二分

几乎每一个人都用 乘法表。但是你能在乘法表中快速找到第 k 小的数字吗?

乘法表是大小为 m x n 的一个整数矩阵,其中 mat[i][j] == i * j(下标从 1 开始)。

给你三个整数 mnk,请你在大小为 m x n 的乘法表中,找出并返回第 k 小的数字。

示例 1:

复制代码
输入:m = 3, n = 3, k = 5
输出:3
解释:第 5 小的数字是 3 。

思路

这个带下取整的不等式怎么变化的?

可以先去掉下取整符号,在加回来,发现也是成立的(因为n一定是整数)

二分成立的思路在 有序矩阵中第K小的元素-CSDN博客 有介绍

python 复制代码
class Solution:
    def findKthNumber(self, m: int, n: int, k: int) -> int:
        left,right=1,m*n

        while left<right:
            mid=(left+right)//2
            count= mid//n*n
            for i in range(mid//n+1,m+1):
                count+=mid//i
            if count>=k:
                right=mid
            else:
                left=mid+1
        return left
相关推荐
AI玫瑰助手6 小时前
Python函数:位置参数与关键字参数的使用
开发语言·python·信息可视化
jay神6 小时前
深度学习模型优化:P2PNet模型MAE下降17.30%
人工智能·python·深度学习·计算机视觉·毕业设计
凯瑟琳.奥古斯特6 小时前
选择题专练数据库原理精选30题
开发语言·数据库·职场和发展·数据库开发
axinawang6 小时前
第7课:数据类型和类型转换
python
月光船幽幽6 小时前
LLM智能网关配置解析
人工智能·科技·动态规划·拓扑学
2401_876964136 小时前
27考研李艳芳网课|王谱2027数学讲义
人工智能·经验分享·深度学习·考研·算法·计算机视觉·概率论
hh.h.7 小时前
CANN pypto 工具链:PTO 虚拟指令集开发入门
开发语言·python·cann
MoonBit月兔7 小时前
MoonBit开源创新大赛山东&重庆高校行——与青年开发者共探AI原生软件新未来
开发语言·人工智能·开源·ai-native·moonbit