LeetCode240 搜尋二維矩陣II
阿新 • • 發佈:2022-01-15
題目
編寫一個高效的演算法來搜尋mxn矩陣 matrix 中的一個目標值 target 。該矩陣具有以下特性:
每行的元素從左到右升序排列。
每列的元素從上到下升序排列。
示例 1: 輸入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 5 輸出:true 示例 2: 輸入:matrix = [[1,4,7,11,15],[2,5,8,12,19],[3,6,9,16,22],[10,13,14,17,24],[18,21,23,26,30]], target = 20 輸出:false 提示: m == matrix.length n == matrix[i].length 1 <= n, m <= 300 -109<= matrix[i][j] <= 109 每行的所有元素從左到右升序排列 每列的所有元素從上到下升序排列 -109<= target <= 109
方法
Z字搜尋法
從右上角開始搜尋,若左邊都比當前小,下邊都比當前大
- 時間複雜度:O(m+n),m為行數,n為列數
- 空間複雜度:O(1)
class Solution { public boolean searchMatrix(int[][] matrix, int target) { int m = matrix.length; int n = matrix[0].length; int i = 0,j = n-1; while(i<m&&j>=0){ if(matrix[i][j]>target){ j--; }else if(matrix[i][j]<target){ i++; }else{ return true; } } return false; } }