階梯查詢演算法,力扣題240 搜尋二維矩陣 II

2021-10-05 11:29:22 字數 947 閱讀 7330

編寫乙個高效的演算法來搜尋

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 可達...