654. Maximum Binary Tree
題目網址:https://leetcode.cn/problems/maximum-binary-tree/
題意:給一不重複的的整數 array
nums, 利用下面的演算法遞迴建構 Maximum BT:
- 創建一個 root, 其值為
nums中最大值- 用最大值左邊的 subarray 遞迴建構左子樹
- 用最大值右邊的 subarray 遞迴建構右子樹
返回
nums建構的 Maximum BT。



Solution:
想法:利用 DFS
class Solution { |
- time:$O(n^2)$ ➔ for loop 被呼叫
n次- best case:每次 $O(log(n))$, 每次取出 maxIdx 恰好將 array 切分成兩個長度一樣的 subarray
e.g.[1,3,2]➔ 取出 3, 得到兩個 subarray :[1]和[2] - worse case:每次 $O(n)$, 其中
nums由小到大, 每次取出maxIdx都為最右邊的 idx, 導致其中一個 subarray 為 empty array
e.g.[1,2,3]➔ 取出 3, 得到兩個 subarray :[1,2]和[]
- best case:每次 $O(log(n))$, 每次取出 maxIdx 恰好將 array 切分成兩個長度一樣的 subarray
- space:$O(n)$ ➔ 遞迴深度不超過
n
本部落格所有文章除特別聲明外,均採用 CC BY-NC-SA 4.0 許可協議。轉載請註明來自 Zako's Blog!
評論