Leetcode刷題記錄 構建最大數二叉樹

2021-09-08 20:03:08 字數 880 閱讀 9625

給定乙個不含重複數字的陣列,最大二叉樹構建規則如下:

1、根是陣列中最大的數字

2、左邊的子樹是最大數字左邊的內容

3、右邊的子樹是最大數字右邊的內容

class solution(object):

def constructmaximumbinarytree(self, nums):

""":type nums: list[int]

:rtype: treenode

"""#print(max(nums))

#print(nums.index(max(nums)))

#print(nums)

if len(nums) == 0:

return none

t = treenode(max(nums))

if len(nums) > 1:

t.left = self.constructmaximumbinarytree(nums[:nums.index(max(nums))])

t.right = self.constructmaximumbinarytree(nums[nums.index(max(nums)) + 1 :])

else:

t.left = none

t.right = none

return t

提交後這個答案只打敗了17%的對手,分析一下感覺是因為index、len函式呼叫次數過多,應該可以將結果放在乙個變數中,提高執行效率。

本文為作者原創,如果您覺得本文對您有幫助,請隨意打賞,您的支援將鼓勵我繼續創作。

leetcode刷題記錄

我覺得每天來兩道,練習練習,再看看人家是怎麼優化的。1.給定乙個整數陣列 nums 和乙個目標值 target,請你在該陣列中找出和為目標值的那 兩個 整數,並返回他們的陣列下標。c 暴力求解,204ms,9.1m class solution for index,num in enumerate ...

LeetCode刷題記錄

動態規劃和貪心演算法的異同點 class solution throw newruntimeexception 時間複雜度 o n 2 對於每個元素,我們試圖通過遍歷陣列的其餘部分來尋找它所對應的目標元素,這將耗費 o n o n 的時間。因此時間複雜度為 o n 2 需要一種方法,尋找符合要求的元...

leetcode刷題記錄

工作之餘刷刷題排解下寂寞 1 面試題66.構建乘積陣列 解題思路 題目要求可以簡化為求陣列中任意乙個元素左右兩邊所有元素的乘積。偷懶就用了乙個套路,練習了p c c python class solution def constructarr self,a list int list int 除法是...