題目:在乙個 n * m 的二維陣列中,每一行都按照從左到右遞增的順序排序,每一列都按照從上到下遞增的順序排序。請完成乙個函式,輸入這樣的乙個二維陣列和乙個整數,判斷陣列中是否含有該整數。
示例:常規迴圈遍歷查詢,遍歷二維陣列,判斷每個子陣列中是否存在該值。現有矩陣 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
。限制:
0 <= n <= 1000
0 <= m <= 1000
class solution else else }}
return $res;
}}
提交通過。
執行用時:64 ms
記憶體消耗:21.2 mb
根據題目描述的二維陣列具備二分搜尋樹(binary search tree)的特性,以右上角的元素為根節點:
所以在搜尋(查詢)給定元素的時候,可以根據以上特性設定判斷條件篩選:
先比較一行的最後乙個元素與給定元素$target,如果$target大,則去找下一行的最後乙個元素;如果$target小,則去找同一行的前乙個元素。
class solution else elseif ($target < $matrix[$row][$col]) else
}return false;}}
}
提交通過。
執行用時:64 ms
記憶體消耗:21.1 mb
Codeup二叉查詢樹 二叉搜尋樹
判斷兩序列是否為同一二叉搜尋樹序列 開始乙個數n,1 n 20 表示有n個需要判斷,n 0 的時候輸入結束。接下去一行是乙個序列,序列長度小於10,包含 0 9 的數字,沒有重複數字,根據這個序列可以構造出一顆二叉搜尋樹。接下去的n行有n個序列,每個序列格式跟第乙個序列一樣,請判斷這兩個序列是否能組...
二叉排序樹 二叉搜尋樹 二叉查詢樹
特點 結構體定義struct node 建樹 建二叉排序樹 void create node root,int t else if t root data create root lc,t else create root rc,t 前序遍歷 層序 字典序 int flag int pre 1001...
二叉搜尋樹(二叉排列樹或二叉查詢樹)
1 二叉排序樹性質 1 就是若它的左子樹不空,則左子樹上所有節點的值均小於它的根節點的值 2 若它的右子樹不空,則右子樹上所有節點的值均大於其根節點的值。3 換句話說就是 任何節點的鍵值一定大於其左子樹中的每乙個節點的鍵值,並小於其右子樹中的每乙個節點的鍵值。2 二叉排序樹查詢 要在二叉樹中找出查詢...