力扣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;
      }
  };
相关推荐
2301_80311013几秒前
����: �Ҳ������޷��������� javafx.fxml ԭ��: java.lang.ClassNotFoundException解决方法
java
依晴无旧14 分钟前
数组算法(二):交替子数组计数
数据结构·算法
ddddd码15 分钟前
力扣-贪心算法4
算法·leetcode·贪心算法
GSDjisidi26 分钟前
日本IT-SIER/SES的区别详情、契约形态等
java·大数据·c语言·c++·php
小悟空GK27 分钟前
Tomcat
java·tomcat
ZShiJ32 分钟前
【题解】—— LeetCode一周小结27
算法·leetcode·职场和发展
静心观复1 小时前
futures.toArray(new CompletableFuture[0])
java
java6666688881 小时前
如何在Spring Boot中实现实时通知
java·spring boot·后端
万界星空科技1 小时前
介绍一款Java开发的商业开源MES系统
java·开发语言·经验分享·科技·5g·开源·制造
振华首席娱记1 小时前
代码随想录——划分字母区间(Leetcode763)
java·数据结构·算法·leetcode·职场和发展