class Solution { /** * leetcode P378 有序矩阵中第k小的元素 * @param matrix * @param k * @return */ public static int kthSmallest(int[][] matrix, int k) { int row = matrix.length; int col = matrix[0].length;
int[] data = new int[row * col]; int index = 0; for (int i = 0; i < row; i++) { for (int j = 0; j < col; j++) { data[index++] = matrix[i][j]; } }
//除开特殊情况 if (data.length == 0){ return 0; }
return getKthSmall(data,k); }
/** * 返回数组中第k小的数值 * @param data * @param k * @return */ public static int getKthSmall(int[] data, int k){ //排序 mergeSort(data,0,data.length-1);
return data[k-1]; }
/** * 归并排序 递归 * @param nums * @param start * @param end */ public static void mergeSort(int[] nums,int start,int end){ //只要划分的区间长度仍然不为1 if (start != end){ int middle = (start+end) / 2;