力扣668.乘法表中第k小的数

力扣668.乘法表中第k小的数

  • 二分查找

    • 是否有k个比mid小的数
cpp 复制代码
  class Solution {
  public:
      int findKthNumber(int m, int n, int k) {
          auto check = [&](int mid) -> bool
          {
              int res=0;
              int row = 1,col = n;
              while(row <= m)
              {
                  if(row * col <= mid)
                  {
                      res += col;
                      if(res >= k) return false;
                      row ++;
                  }
                  else col --;
              }
              return true;
          };
          int l = 1,r = n * m;
          while(l<r)
          {
              int mid = l + r + 1 >> 1;
              if(check(mid)) l = mid;
              else r = mid - 1;
          }
          return r + 1;
      }
  };
相关推荐
鹿鸣悠悠2 分钟前
【AI-08】Prompt(提示词)
人工智能·算法
数据中穿行3 分钟前
12种经典排序算法完整C++实现
算法
2501_926978338 分钟前
从“数字果蝇” 到“数字意识”以及AGI的构建思路
大数据·人工智能·经验分享·算法·ai写作·agi
吴声子夜歌11 分钟前
小程序——界面API(一)
java·javascript·小程序
予枫的编程笔记14 分钟前
【面试专栏|Java并发编程】从Runnable到Callable,Java4种线程创建方式
java·多线程·thread·java面试·runnable·callable·java线程
无尽的罚坐人生15 分钟前
hot 100 101. 对称二叉树
数据结构·算法·leetcode
野犬寒鸦17 分钟前
SAP后端实习开发面试:操作系统与网络核心考点及Linux与Redis
java·服务器·网络·后端·面试
ServBay19 分钟前
代码减半,10分钟彻底告别 Java 开发旧习
java·后端
MegaDataFlowers30 分钟前
CRUD操作及配置解析
java·mybatis
一叶落43832 分钟前
【LeetCode】1. 两数之和(Two Sum)— 哈希表经典题解(C语言)
数据结构·c++·算法·leetcode