LeetCode240搜尋二維矩陣 II-----掃描
阿新 • • 發佈:2022-04-20
題目表述
編寫一個高效的演算法來搜尋 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; } }