力扣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;
      }
  };
相关推荐
vx-程序开发7 分钟前
springboot在线装修管理系统-计算机毕业设计源码56278
java·c语言·spring boot·python·spring·django·php
大傻^10 分钟前
Spring AI Alibaba 可观测性实践:AI应用监控与链路追踪
java·人工智能·后端·spring·springaialibaba
云烟成雨TD15 分钟前
Spring AI Alibaba 1.x 系列【1】阿里巴巴 AI 生态
java·人工智能·spring
佑白雪乐18 分钟前
LCR 175. 计算二叉树的深度
算法·深度优先
诗人不写诗19 分钟前
spring是如何组织切面的
java·后端·spring
阿Y加油吧24 分钟前
力扣打卡day07——最大子数组和、合并区间
算法
想吃火锅100529 分钟前
【leetcode】105. 从前序与中序遍历序列构造二叉树
算法·leetcode·职场和发展
圣保罗的大教堂31 分钟前
leetcode 3567. 子矩阵的最小绝对差 中等
leetcode
2401_8318249635 分钟前
嵌入式C++驱动开发
开发语言·c++·算法
靠沿38 分钟前
【优选算法】专题十八——BFS解决拓扑排序问题
算法·宽度优先