編寫乙個高效的演算法來搜尋
m x n 矩陣 matrix 中的乙個目標值 target。該矩陣具有以下特性:
每行的元素從左到右公升序排列。
每列的元素從上到下公升序排列。
例:
現有矩陣 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。
給定 target = 20,返回
false。
這種題,順序查詢肯定是不行,二分法查詢可以,不過階梯演算法更簡單
要點是:
1.有序陣列
2.確定下一步方向確定的起始點
階梯,就是在有序的陣列有著固定的方向,只能向下向左這種意思,而問題來了,從左上角開始,如果是小於的話,會導致向下和向右都可以,所以要找到乙個比較時,單方向可以的點,比如右上。
class
solution
//注意這是右上角,x是橫向y是列數
int x=matrix[0]
.length-1;
int y=0;
//x是每列多少元素,所以是matrix[0].length-1
//y是有多少列,對於整個陣列的長度
//注意下,向前推進到頭是迴圈條件
while
(x>=
0&&yelse
if(matrix[y]
[x]>target)
else
}return
false;}
}
力扣演算法題 074搜尋二維矩陣
編寫乙個高效的演算法來判斷 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...
力扣演算法題 079單詞搜尋 DFS
給定乙個二維網格和乙個單詞,找出該單詞是否存在於網格中。單詞必須按照字母順序,通過相鄰的單元格內的字母構成,其中 相鄰 單元格是那些水平相鄰或垂直相鄰的單元格。同乙個單元格內的字母不允許被重複使用。示例 board a b c e s f c s a d e e 給定 word abcced 返回 ...
力扣演算法題 045跳躍遊戲二
1 include 000庫函式.h 2 34 考慮當前最遠能到什麼地方,例如2,3,1,1,4,5 首先只考慮a 0 2,即最遠可以到a 2 然後從1到2中找下乙個可到的最遠點,6 即a 1 可以到達a 4 此時找到結果,步數記錄為2。若接著考慮,7 下一次應該從3 4裡面找乙個最遠即a 4 可達...