面試衝刺演算法系列 40

2021-10-24 01:51:12 字數 534 閱讀 5397

二叉搜尋樹特點:

一棵 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演算法系列

棧的概念 棧是一種特殊的線性表,堆疊的資料元素以及資料元素之間的關係和線性表是完全一樣的。差別是線性表是在任意位置進行插入和刪除操作,棧是只允許在固定的一端進行插入和刪除,棧的插入和刪除只允許在棧頂,棧的插入和刪除通常稱為進棧和出棧。資料集合 每個資料元素的資料型別可以是任意的型別 操作的集合 進棧...