###給定乙個值n,能構建出多少不同的值包含1...n的二叉搜尋樹(bst)?@param n int整型
#@return int整型
#class
solution:
defnumtrees(self , n ):
dp = [0 for i in range(n+1)]
dp[0] = 1dp[1] = 1
for j in range(2, n+1):
for k in range(1, j+1):
dp[j] += dp[j-k]*dp[k-1]
return dp[n]
例如給定 n = 3, 有五種不同的二叉搜尋樹(bst)
解題思路:
1.首先了解什麼是bst?
bst(binary search tree)目的是為了提高查詢的效能,其查詢在平均和最壞的情況下都是logn級別,接近二分查詢。
其特點是:每個節點的值大於其任意左側子節點的值,小於其任意右節點的值。
2.我們用f(n)表示對n的求解結果,在草稿上畫畫,你就知道
f(0) = 1
f(1) = 1;
f(2) = f(1)+f(1);
f(3) = f(2)+f(1)f(1)+f(2);
f(4) = f(3)+f(1)f(2)+f(2)f(1)+f(3)
f(5) = f(4)+f(1)f(3)+f(2)f(2)+f(3)*f(1)+f(4)
f(n) = f(n-k)*f(k-1) k=1,2,....,n
牛客網 每日一練
class listnode def init self,x self.val x self.next none param head listnode類 return listnode類 class solution defdeleteduplicates self head ifnot head...
牛客網C 演算法每日一練
在情報傳遞過程中,為了防止情報被截獲,往往需要對情報用一定的方式加密,簡單的加密演算法雖然不足以完全避免情報被破譯,但仍然能防止情報被輕易的識別。我們給出一種最簡的的加密方法,對給定的乙個字串,把其中從a y,a y的字母用其後繼字母替代,把z和z用a和a替代,則可得到乙個簡單的加密字串。輸入描述 ...
牛客每日一練(2018 10 20)
1 給定二進位制字串,將其換算成對應的十進位制數字 時間限制 3秒 空間限制 32768k 熱度指數 13677 function base10 str parseint方法可以將其它進製轉換為十進位制,只需要給該方法傳入需要轉換的字串和該字串的進製表示兩個引數即可。ps parseint 返回的是...