leetcode刷題(7) 搜尋二維矩陣

2021-09-28 14:56:11 字數 959 閱讀 4868

編寫乙個高效的演算法來判斷 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 ...