每天進步一點點,就已經很棒很棒了,堅持堅持,不要太累,拒絕內卷,從每日一練開始,每天十分鐘,快樂生活一輩子!疫情依舊反復,大家帶好口罩啊~ 繼續繼續,來,今天和車神哥一起來提升自己的Python編程和面試能力吧,刷天梯~
放上我拍的Photo吧!晚上去買了茶百道,獎勵自己一波,哈哈
每日推薦一首歌:一路向北——Jay Chou
以下為我的天梯積分規則:
每日至少一題:一題積分+10分
若多做了一題(或多一種方法解答),則當日積分+20分(+10+10)
若做了三道以上,則從第三題開始算+20分(如:做了三道題則積分-10+10+20=40;做了四道題則積分–10+10+20+20=60)初始分為100分
若差一天沒做題,則扣積分-10分(周六、周日除外注:休息)
堅持!!!
給你一個整數數組 nums ,其中元素已經按 升序 排列,請你將其轉換為一棵 高度平衡 二叉搜索樹。
高度平衡 二叉樹是一棵滿足「每個節點的左右兩個子樹的高度差的絕對值不超過 1 」的二叉樹。
示例 1:
輸入:nums = [-10,-3,0,5,9]
輸出:[0,-3,9,-10,null,5]
解釋:[0,-10,5,null,-3,null,9] 也將被視為正確答案:
示例2:
輸入:nums = [1,3]
輸出:[3,1]
解釋:[1,3] 和 [3,1] 都是高度平衡二叉搜索樹。
分析:
我們需要做的是轉換為一顆高度平衡的二叉搜索樹,題目中說道我們的數組nums是已經排完序號的,我們可以利用遞歸的思想,將每次取出數組中的中間值,然後將前一個數作為左節點,後一個數作為右子樹節點,這樣下去就完成了二叉樹的分配。我們可以用切片來遞歸取值,然後填寫到子樹種。今天的題不是很難,還有深度搜索可以試一試。
大佬的圖簡直就是心聲:
class Solution: def sortedArrayToBST(self, nums: List[int]) -> TreeNode: n = len(nums) if n == 0: return None mid = n // 2 # 平板除,取中位數 root = TreeNode(nums[mid]) root.left = Solution.sortedArrayToBST(self, nums[:mid]) root.right = Solution.sortedArrayToBST(self, nums[mid+1:]) return root
二叉樹,到這裡,也刷完了,耶!
這會兒才有點空,今天太累了,終於周末啦,休息休息,不對,明兒還得有個會議,啊!!!
明天我要睡到中午才起來!!!