乘法表中第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
相关推荐
青山木2 分钟前
Hot 100 --- 跳跃游戏 II
java·数据结构·算法·leetcode·贪心算法
Tisfy6 分钟前
LeetCode 3870.统计范围内的逗号:模拟 或 一步计算
数学·算法·leetcode·题解·模拟·遍历
weixin_4407305014 分钟前
playwright浏览器自动化实战笔记3-登陆以及退出登陆流程-多用户操作
笔记·python·自动化
明月_清风15 分钟前
字符串匹配四大经典算法:BF、RK、BM、KMP 到底有什么区别?
后端·算法
疯狂打码的少年15 分钟前
【计算机网络】OSI/RM七层模型(层次结构、各层功能速览)
开发语言·笔记·计算机网络·php
小灰灰搞电子16 分钟前
Rust+Slint 实现ModbusRTU从机调试助手源码分享
开发语言·rust·modbusrtu
程序喵大人17 分钟前
【C++入门】值类别与表达式 - 03 引用绑定:为什么有些参数能接住临时对象
开发语言·c++·引用绑定
卷无止境22 分钟前
测试全绿,功能能跑,代码却烂到没法上线:AI编程助手留下的十个坑
后端·python
子非鱼a27 分钟前
【WEB】[RoarCTF 2019]Easy Java
java·开发语言
卷无止境29 分钟前
终端里的AI战争,命令行编程代理全景扫描
python·agent