乘法表中第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
相关推荐
没落之王19 分钟前
AI在文言文——论文脉复苏对AI的意义
大数据·人工智能·算法
小小张说故事19 分钟前
Python logging 日志不输出?根源在 propagate 这条链上
后端·python
mmsx26 分钟前
Android Dialog 插槽模式:用一套壳统一全应用的弹窗风格
android·java·dialog·开发语言
huanbailu31 分钟前
Qt 跨线程信号槽:connect 返回 true 但槽函数不执行的坑
开发语言·c++·qt·信号槽·跨线程·元类型
u01110267534 分钟前
工具页案例图如何编写 alt让图片说明与处理场景对应
java·前端·javascript·图像处理·人工智能·算法·ai作画
ZealSinger38 分钟前
Go slog生产落地LevelVar与共存
开发语言·后端·golang·go
阿狗童鞋38 分钟前
数据结构与算法实战指南
数据结构·算法
喜欢打篮球的普通人40 分钟前
MiniMind 学习笔记(十):优化器、学习率和数据设置——训练稳定性的三块基石
笔记·python·学习
醇氧1 小时前
uvicorn 详细介绍
linux·运维·python·python3.11
落魄实习生1 小时前
Agent Scope Java 2.x 系列【11】AgentState 与状态存储
java·开发语言·ai