1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
public class {
public int kthSmallest(int[][] matrix, int k) { int n = matrix.length; int left = matrix[0][0]; int right = matrix[n-1][n-1]; while(left < right){ int mid = left + (right - left) >> 1; int count = getCount(matrix, mid); if (count < k){ right = mid + 1; } else{ left = mid; }
} return left; }
public int getCount(int[][] matrix, int mid){ int i = matrix.length; int j = 0; int count = 0; while(j<matrix.length && i > 0){ if (matrix[i][j] > mid){ i --; } else { count += i +1; j ++; } } return count; } }
|
近期评论