1. 程式人生 > 其它 >LeetCode240搜尋二維矩陣 II-----掃描

LeetCode240搜尋二維矩陣 II-----掃描

題目表述

編寫一個高效的演算法來搜尋 m x n 矩陣 matrix 中的一個目標值 target 。該矩陣具有以下特性:

  • 每行的元素從左到右升序排列。

  • 每列的元素從上到下升序排列。

掃描

該題可以直接用雙層for迴圈暴力解決,時間複雜度為0(nm),也可以用for迴圈巢狀二分查詢,時間複雜度為0(nlogm)。但這都不是最好的選擇。
根據題意可以知道,每行的元素從左到右升序排列,每列的元素從上到下升序排列。因此可以從右上角開始,判斷當前元素和target元素的大小。如果target > 當前元素,則與當前元素下邊元素比較,如果target < 當前元素,則與當前元素左邊元素進行比較,直到越出邊界還沒找到結果則返回-1;

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int m = 0;
        int n = matrix[0].length-1;
        while(m < matrix.length && n >= 0){
            if(matrix[m][n] == target){
                return true;
            }
            if(matrix[m][n] > target){
                n--;
            }else{
                m++;
            }
        }
        return false;
    }
}