乘法表中第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
相关推荐
Python+9915 小时前
Java 编程语言入门指南
java·开发语言
IVEN_15 小时前
Python官方包、Conda、uv,应该怎么选
python
wabs66615 小时前
关于图论【卡码网104.建造最大岛屿的思考】
数据结构·算法·图论
玖玥拾15 小时前
LeetCode 27 移除元素
算法·leetcode
程序喵大人15 小时前
【C++进阶】STL容器与迭代器 - 05 map 和 set 为什么按键保持有序
开发语言·c++·容器·迭代器·stl
完美火龙篇 四月的友15 小时前
SkillOpt 架构拆解:把 Skill 文本当参数,用执行轨迹训练 Agent
开发语言·php
冻柠檬飞冰走茶16 小时前
PTA基础编程题目集 7-15 计算圆周率(C语言实现)
c语言·开发语言·数据结构·算法
问商十三载16 小时前
AI 引擎生成式优化两种思路怎么选?2026 对比分析附选型方法
人工智能·算法
凡尘——雨落凡尘16 小时前
Python列表索引越界IndexError问题深度解析与解决办法
python·indexerror·list index out of range
前端炒粉16 小时前
简易实现ssr
开发语言·前端·javascript