题目描述
给定一个 n x n 矩阵,其中每行和每列元素均按升序排序,找到矩阵中第k小的元素。
请注意,它是排序后的第k小元素,而不是第k个元素。
示例:
matrix = [
[ 1, 5, 9],
[10, 11, 13],
[12, 13, 15]
],
k = 8,
返回 13。
说明:
你可以假设 k 的值永远是有效的, 1 ≤ k ≤ n2 。
输入描述:
第一行为k的值和矩阵的n的值 后续为n*n矩阵的数字,以空格分割
输出描述:
矩阵中第k小的元素
示例1
输入
8 3 1 5 9 10 11 13 12 13 15
输出
13
参考程序如下:
import java.util.*;
public class Main{
public static void main(String args[]){
Scanner reader=new Scanner(System.in);
String tmp=reader.nextLine();
String fields[]=tmp.split(" ");
int k=Integer.parseInt(fields[0]);
int n=Integer.parseInt(fields[1]);
int arr[]=new int[n*n];
int location=0;
for(int i=0;i<n;i++){
String tmp1=reader.nextLine();
String fields1[]=tmp1.split(" ");
for(String field:fields1){
arr[location++]=Integer.parseInt(field);
}
}
Arrays.sort(arr);
System.out.prinln(arr[k-1]);
}
}
本文介绍了一种算法,用于在nxn的升序排列矩阵中查找第k小的元素。通过读取输入的k值和矩阵,将所有元素整理成一维数组并排序,从而高效地找到目标元素。
2734

被折叠的 条评论
为什么被折叠?



