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

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

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

给你三个整数 m、n 和 k,请你在大小为 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
相关推荐
用户8356290780514 分钟前
使用 Python 控制 Excel 工作表的分页位置
后端·python
用户83562907805115 分钟前
Python 如何在 Word 中添加和管理文档变量
后端·python
X1A0RAN27 分钟前
PPT 图片批量处理教程:导出全部幻灯片 · 提取全部素材
开发语言·javascript·powerpoint
熊猫钓鱼>_>2 小时前
普通用户视角的端侧智能体验手记【鸿蒙心迹】
开发语言·人工智能·华为·智能手机·性能优化·ai编程·harmonyos
瑞雪兆丰年兮2 小时前
JavaWeb-day13-SpringBootWeb事务管理&AOP
java·开发语言·springboot·javaweb·事务·web·aop
lsc_blog3 小时前
听到优化风声,先准备能由自己掌控的事
数据库·分布式·中间件·职场和发展·重构
用户019027581613 小时前
Dify / Coze 低代码 Agent 怎么接 A 股行情?
python
布莱克6053 小时前
Swift 常量详解:从 let 到编译期优化
服务器·开发语言·ssh·swift·常量·let
Dumbness3 小时前
不传 day 参数,座位图显示全空:用 Python 标准库手写 Web 框架,请求到业务代码前的 5 个细节
后端·python
布莱克6054 小时前
Swift 可选类型(Optionals)详解:从原理到实战
开发语言·安全·ssh·swift·optional·可选类型