感覺刷了這么久的題好像有一點進(jìn)入狀態(tài)了...現(xiàn)在做題思路比最開始快了很多,這題基本上3分鐘就做完了。
大概思路是要做一個root, 一個left subtree, right subtree. 但是我一開始只有一個function,我發(fā)現(xiàn)要recursion的時候, array不是很好取middle point。 因為比如最開始Array是[1,3,4,5,6,7,8,9]. 第一次mid point拿到root以后,要把middle point的左右分成兩個子array 繼續(xù)recursion, 類似[1,3,4,5], [7,8,9] 這樣。 這個時候就必須需要用到另一個function了,這樣你才可以多允許幾個參數(shù)。
還有一個比較tricky的地方在于, middle point怎么取。
比如說odd number elements in array, array size =11. 那么很自然取第6個number,這樣left 5 個, right 5個。
但是如果是even number elements in array. array size = 10. 怎么?。?/p>
[1,2,3,4,5,6,7,8,9,10]
我的做法是 (start + array.len-1)/2 ?不過呢。。我做的時候也沒細(xì)想。。但是就直接pass test了。不過分析了一下,如果不specify end point為 array.len-1. 之后recursion 到一定時候會array index out of bounds