遞迴的確簡潔, 但效能很差, 因為它進行了大量重複的計算,給出1, 2, 3, 4, 5, ..., n 一共n個數, 求用它們能夠構成多少種形狀不同的二叉搜尋樹如果用遞迴運算做乘法,
5!*4! = 5*4*3*2*1 * 4*3*2*1
顯然4!完全可以算一遍, 而遞迴結結實實的算了兩遍如果我們把每一步運算的結果都用字典存起來, 那就能減少大量的運算
二叉搜尋樹 "左節點的值大於右節點"二叉搜尋樹
class solution:
def __init__(self):
self.ubs_dic =
def numtrees(self, n):
# 要求n的就必須把前面所有的項都求出來
for k in range(n+1):
tmp = 0
for now_k in range(k):
pre_left = self.ubs_dic[now_k]
pre_right = self.ubs_dic[k-now_k-1]
if pre_left == 0:
pre_left = 1
if pre_right == 0:
pre_right = 1
tmp = tmp + (pre_left * pre_right)
self.ubs_dic[k] = tmp
return self.ubs_dic[n]
def main():
so = solution()
result = so.numtrees(10)
print(result)
if __name__ == '__main__':
main()
Code coverage並非萬能的
前面單元測試中提到 覆蓋率,簡單來說 被執行過,就是 覆蓋過 如果一段程式執行了一組測試用例之後,100 的 被執行了,那麼是否就說明再也不用寫新的測試用例了呢?答案是否定的。1 不同 是否執行,有很多組合,一行 被執行過,沒有問題,並不表明這一行程式在所有可能條件的組合下都能正確無誤地執行。2 覆...
並非萬能的XML
並非萬能的xml 左直拳 xml是個炙手可熱的東西,出來很多年了,好象還聽說將取代html 不過直到今天html1.1還健在,其實我認為兩者很大程度上並無可比性 有一次我去面試,人家問我熟不熟悉xml,答曰不會,結果被 人來落閘放狗 地趕了出來。不過看起來,xml比較適合少量的資料,記錄一多,弊端就...
萬能密碼 php,PHP萬能密碼
說實話如果乙個 的前台都是注入漏洞,那麼憑經驗,萬能密碼進後台的機率基本上是百分之百。可是有的人說對php的站如果是gpc魔術轉換開啟,就會對特殊符號轉義,就徹底杜絕了php注入。其實說這話的人沒有好好想過,更沒有嘗試過用萬能密碼進php的後台。其實gpc魔術轉換是否開啟對用萬能密碼進後台一點影響也...