二叉搜尋樹特點:
一棵 bst :左孩子 < 根結點 < 右孩子(用於判斷)
一棵 bst 的左子樹或者右子樹都是 bst(用於遞迴)
後序遍歷最後乙個結點即為根結點
抓住這三個特點進行遞迴即可求解
public
class
solution
public
boolean
isbst
(int
arr,
int start,
int root)
int i = root;
while
(start>arr[root]
)for
(int j=start;j1;j++)}
return
isbst
(arr,start,i-1)
&&isbst
(arr,i,root-1)
;//遞迴,若左右子樹同時滿足則true,否則false
}}
面試衝刺演算法系列 21
看到公升序,降序等代表有序的詞就可以優先考慮二分法。設定兩個指標,分別指向第乙個k和最後乙個k,最後乙個k減去第乙個k的索引即可獲得k的個數。public class solutionif firstk 1 lastk 1 return0 public intfindfirstk int array...
面試衝刺演算法系列 63
最原始的方法是檢查每乙個數 array i 看是否左邊的數都小於等於它,右邊的數都大於等於它。這樣做的話,要找出所有這樣的數,時間複雜度為o n 2 其實可以有更簡單的方法,我們使用額外陣列,比如rightmin,來幫我們記錄原始陣列array i 右邊 包括自己 的最小值。假如原始陣列為 arra...
java演算法系列
棧的概念 棧是一種特殊的線性表,堆疊的資料元素以及資料元素之間的關係和線性表是完全一樣的。差別是線性表是在任意位置進行插入和刪除操作,棧是只允許在固定的一端進行插入和刪除,棧的插入和刪除只允許在棧頂,棧的插入和刪除通常稱為進棧和出棧。資料集合 每個資料元素的資料型別可以是任意的型別 操作的集合 進棧...