378. Kth Smallest Element in a Sorted Matrix

자만하다가 큰 코 다쳤읍니다^^

class Solution {
    public int kthSmallest(int[][] matrix, int k) {
        int h = matrix.length;
        int w = matrix[0].length;
        
        if (k > h * w) {
            return -1;
        }
        
        if (w == 1) {
            return matrix[k - 1][0];
        }
        
        int row = (k - 1) / w;
        
        int col = (k - 1) % w;
        
        
        return matrix[row][col];
    }
}

처음에 난독이 왔읍니다.

엥? 이거 뭐야. 너무 쉬운 것 아닌가 ㅎㅎ 3초컷.

class Solution {
    public int kthSmallest(int[][] matrix, int k) {
        int h = matrix.length;
        int w = matrix[0].length;
        
        PriorityQueue<Integer> heap = new PriorityQueue<>(Collections.reverseOrder());
        
        for (int i = 0; i < h; i++) {
            for (int j = 0; j < w; j++) {
                heap.offer(matrix[i][j]);
                
                if (heap.size() > k) {
                    heap.poll();
                }
            }
        }
        
        return heap.poll();
    }
}

Runtime: 18 ms, faster than 28.43% of Java online submissions for Kth Smallest Element in a Sorted Matrix.
Memory Usage: 44 MB, less than 78.33% of Java online submissions for Kth Smallest Element in a Sorted Matrix.

Heap 이친구는 도무지 정이 안가네요;
내일까지 어떻게든 정 붙여 오겠읍니다

좋은 웹페이지 즐겨찾기