题目描述
给定一个 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小的元素
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] inputStrings = br.readLine().split("\\s+");
int k = Integer.parseInt(inputStrings[0]), n = Integer.parseInt(inputStrings[1]);
int[] numbers = new int[n*n];
int index = 0;
for (int i=0; i<n; ++i) {
String[] eachRow = br.readLine().split("\\s+");
for (int j=0; j<n; ++j) {
numbers[index++] = Integer.parseInt(eachRow[j]);
}
}
Arrays.sort(numbers);
System.out.println(numbers[k-1]);
}
}