공부기록

74. Search a 2D Matrix 본문

코테/LeetCode

74. Search a 2D Matrix

코타쿠 2022. 4. 21. 21:26

문제

https://leetcode.com/problems/search-a-2d-matrix/

코드

import java.util.*;

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int M = matrix.length;
        int N = matrix[0].length;
        int start=0;
        int end=M-1;
        int mid = 0;
        while(start < end){
            mid = (start+end)/2;

            if(matrix[mid][N-1] >= target){
                end = mid;
            }else{
                start = mid+1;
            }
        }

        int curRow = end;

        start = 0;
        end = N-1;


        while(start <= end){
            mid = (start+end)/2;
            if(matrix[curRow][mid] == target)
                return true;
            else if(matrix[curRow][mid] < target)
                start = mid+1;
            else if(matrix[curRow][mid] > target)
                end = mid-1;
        }


        return false;
    }
}

피드백

  • upper bound를 사용함
    • lower_bound는 {min(x) | x >= k } 의 인덱스를 구하는 것이다.
    • upper_bound는 {min(x) | x > k } 의 인덱스를 구하는 것이다.
    • 헷갈리지 말자.

'코테 > LeetCode' 카테고리의 다른 글

576. Out of Boundary Paths  (0) 2022.07.17
821. Shortest Distance to a Character  (0) 2022.07.08
49. Group Anagrams  (0) 2022.04.19
347. Top K Frequent Elements  (0) 2022.04.16
179. Largest Number  (0) 2022.04.15