当前位置: 首页 > news >正文

LeetCode 668.乘法表中第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 。

示例 2:
在这里插入图片描述
输入:m = 2, n = 3, k = 6
输出:6
解释:第 6 小的数字是 6 。

提示:

1 <= m, n <= 3 * 104^44
1 <= k <= m * n

二分答案,二分下界是1,上界是可能的最大值,即m*n:

class Solution {
public:int findKthNumber(int m, int n, int k) {int maxLen = max(m, n);int minLen = min(m, n);int l = 1;int r = m * n;int ans = 0;while (l <= r) {int m = l + (r - l) / 2;int mulNum = 0;for (int i = 1; i <= min(minLen, m); ++i) {// 这一行(或列,是较短的那条边)中,有几个数字小于mmulNum += min(m / i, maxLen);if (mulNum > k) {break;}}// 如果比m小的数字大于等于k,说明m找大了,缩小它if (mulNum >= k) {ans = m;r = m - 1;} else {l = m + 1;}}return ans;}
};

此算法时间复杂度为O(min(n,m)log(mn)),空间复杂度为O(1)。

http://www.dtcms.com/a/512859.html

相关文章:

  • 专业网站建设市场分析自媒体平台哪个收益高
  • 建设通网站怎么样网站如何做响应
  • Java 中的自引用
  • Cursor AI 技术架构、核心模型与技术参数全解析
  • 记录一次线上oom问题排查
  • 深度解析:通过ADO.NET驱动Kdbndp高效连接与操作Kingbase数据库
  • 网站排名怎么上去网站建设捌金手指花总二五
  • 上海做电子商务网站的公司快猫
  • Pycharm远程连接服务器项目
  • linux系统--LVM扩容如何把新的物理卷添加到LVM中 详细教程 超简单
  • 泉州丰泽建设局网站北京做app的公司有哪些
  • 4.8.定义模式
  • Linux命令过关挑战
  • 国内域名购买网站山西省住房和城乡建设厅网站
  • SH-PEG-Silane|巯基-聚乙二醇-硅烷|表面修饰应用
  • 科技园区建设网站的意义做实体识别的网站
  • 网站的不同类石家庄手机网站建设公司
  • Pycharm中使用自带的数据库可视化工具
  • 东莞高端网站建设费用c2c商城网站建设二次开发
  • 做兼职翻译的网站专业网站定制公司
  • 【ROS2】行为树 BehaviorTree(九):自定义ROS2-行为树节点
  • 考研408《计算机组成原理》复习笔记,第七章(2)——I/O方式
  • h5企业网站模板怎么做网站地图的样式
  • 中核华兴建设有限公司投标网站在阿里巴巴上做网站有效果吗
  • 快速搭建网站vue郑州网站高端网站设计
  • 【文献分享】acmgscaler:用于在 ACMG/AMP 框架内对基因层面的变异效应得分进行标准化校准。
  • 鸿蒙 HarmonyOS 应用框架中前端开发模式或应用类型的分类
  • 牛客:矩阵消除游戏
  • 管理咨询网站建设免费咨询法律服务
  • 哪些网站动效做的不错网站开发中网页之间的链接形式有什么