Java实现 LeetCode 378 有序矩阵中第K小的元素
2024-09-03 00:07:06
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;
}
}
最新文章
- matlab 曲线拟合
- oracle判断字段是否存在语句
- datagrid---写后台数据交互
- java基础:熟悉3种内部类的写法,重点匿名内部类的使用
- I方法 thinkphp
- CentOS 6.6 yum 搭建LAMP环境
- 写了个pager, 可供参考
- ORACLE impdp 导入数据
- 【Leetcode】寻找数串中连续最大整数和且最大长度的子串
- 【iOS】Swift字符串截取方法的改进
- 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
- ubuntu环境下lnmp环境搭建(1)之Mysql
- NetCore2.0技术文章目录
- 老男孩Python全栈学习 S9 日常作业 001
- Linux 日志分析脚本
- 第5天(半天)【shell编程初步、grep及正则表达式】
- spark0.8.0安装与学习
- JVM内存模型(二)
- SQL Serever学习12——数据库的备份和还原
- ie浏览器升级的正确姿势
热门文章
- [hdu5411 CRB and Puzzle]DP,矩阵快速幂
- Unity接入友盟分享遇到的坑
- Mockito如何mock一条链式调用
- Codeforces 949C(Data Center Maintenance,Tarjan缩点)
- 【题解】合唱队形——LIS坑爹的二分优化
- spark机器学习从0到1协同过滤算法 (九)
- removebg抠图小工具
- jquery.autocomplete的使用-----------------------摘抄别人的
- JAVA ArrayList集合基础
- Javascript书写位置