378. 有序矩阵中第K小的元素

给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。

请注意,它是排序后的第k小元素,而不是第k个元素。

示例:

matrix = [
[ 1, 5, 9],
[10, 11, 13],
[12, 13, 15]
],
k = 8,

返回 13。

说明:

你可以假设 k 的值永远是有效的, 1 ≤ k ≤ n2 。

class Solution {
public int kthSmallest(int[][] matrix, int k) {
int n = matrix.length;
int left = matrix[0][0], right = matrix[n-1][n-1];
while(left < right){
int mid = (left + right)/2;
int cnt = numMid(matrix, n, mid);
//System.out.println(cnt);
if(cnt >= k){
right = mid ;
} else {
left = mid + 1;
}
}
return right;
} int numMid(int[][] matrix, int n, int mid){
int i = 0, j = n - 1;
int cnt = 0;
while(i<n&& j >=0){
if(matrix[i][j] > mid){
j--;
} else {
cnt += (j+1);
i++;
}
}
return cnt;
}
}

最新文章

  1. matlab 曲线拟合
  2. oracle判断字段是否存在语句
  3. datagrid---写后台数据交互
  4. java基础:熟悉3种内部类的写法,重点匿名内部类的使用
  5. I方法 thinkphp
  6. CentOS 6.6 yum 搭建LAMP环境
  7. 写了个pager, 可供参考
  8. ORACLE impdp 导入数据
  9. 【Leetcode】寻找数串中连续最大整数和且最大长度的子串
  10. 【iOS】Swift字符串截取方法的改进
  11. 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
  12. ubuntu环境下lnmp环境搭建(1)之Mysql
  13. NetCore2.0技术文章目录
  14. 老男孩Python全栈学习 S9 日常作业 001
  15. Linux 日志分析脚本
  16. 第5天(半天)【shell编程初步、grep及正则表达式】
  17. spark0.8.0安装与学习
  18. JVM内存模型(二)
  19. SQL Serever学习12——数据库的备份和还原
  20. ie浏览器升级的正确姿势

热门文章

  1. [hdu5411 CRB and Puzzle]DP,矩阵快速幂
  2. Unity接入友盟分享遇到的坑
  3. Mockito如何mock一条链式调用
  4. Codeforces 949C(Data Center Maintenance,Tarjan缩点)
  5. 【题解】合唱队形——LIS坑爹的二分优化
  6. spark机器学习从0到1协同过滤算法 (九)
  7. removebg抠图小工具
  8. jquery.autocomplete的使用-----------------------摘抄别人的
  9. JAVA ArrayList集合基础
  10. Javascript书写位置