編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性:
每行中的整數從左到右按公升序排列。
每行的第乙個整數大於前一行的最後乙個整數。
示例 1:
輸入:matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]target = 3
輸出: true
示例 2:
輸入:matrix = [
[1, 3, 5, 7],
[10, 11, 16, 20],
[23, 30, 34, 50]
]target = 13
輸出: false
思路:可以觀察發現這個二維陣列是從左到右,從上到下遞增的,所以取右上角數字,進行比較,如果小於目標數,則列進行+1,否則行進行-1,判斷條件就是行列下標都大於等於0,於是寫出了如下**:
class solution
int m = matrix.length-1;
int n = 0;
while(m>=0&&n>=0)
else if(matrix[m][n]target)
}return false;
}}
發現報錯了,因為忽略了可能存在陣列角標越界的可能,於是while判斷也要考慮邊界,於是變成如下**:
class solution
int m = matrix.length-1;
int n = 0;
while(m>=0&&n>=0&&m<=matrix.length-1&&n<=matrix[0].length-1)
else if(matrix[m][n]target)
}return false;
}}
執行通過 Leetcode刷題74 搜尋二維矩陣
編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性 每行中的整數從左到右按公升序排列。每行的第乙個整數大於前一行的最後乙個整數。示例 1 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,50 target 3 輸出 true 示例 2...
日常刷題 搜尋二維矩陣
有規律的陣列查詢最快的方法我想到了二分法。矩陣是從左到右,從上到下變大,那麼對角線的找發會省時一些。方法一 左上到右下 往右和往下都是增大,不能實現。方法二 右下到左上 往上和往左都是減少,不能實現。方法三 右上到左下 往左減少 往下增加,可實現。方法四 左下到右上 往上減少 往右增加,可實現。le...
LeetCode 搜尋二維矩陣
編寫乙個高效的演算法來判斷 m x n 矩陣中,是否存在乙個目標值。該矩陣具有如下特性 每行中的整數從左到右按公升序排列。每行的第乙個整數大於前一行的最後乙個整數。示例 1 輸入 matrix 1,3,5,7 10,11,16,20 23,30,34,50 target 3 輸出 true示例 2 ...