Week20 0731--0806

question 1 列表查重

給定一個(gè)列表,假如里面有任何重復(fù)元素返回true,否則返回false

答案:

利用set函數(shù)能很簡(jiǎn)單的解決這類(lèi)重復(fù)的問(wèn)題。

下面我用了字典來(lái)統(tǒng)計(jì),但是發(fā)現(xiàn)用get函數(shù)會(huì)慢很多

快 55ms


慢 80ms

用了dict的內(nèi)置函數(shù)確實(shí)會(huì)增加一些時(shí)間損耗,所以自己權(quán)衡(但是用get方法建立元素統(tǒng)計(jì)的話代碼很簡(jiǎn)便)


question 2:查詢二叉樹(shù)里面的兩個(gè)元素和是不是?k

給定一個(gè)查詢樹(shù),和值k,問(wèn)樹(shù)里面的兩個(gè)元素能不能組成k(和為k)

我的答案:

最開(kāi)始我想到的是利用二叉搜索樹(shù)的結(jié)構(gòu)特點(diǎn),用搜索樹(shù)來(lái)搜索? y=k-cur.val,可以看到這個(gè)想法還是比較耗時(shí)間的,因?yàn)閷?duì)于每一個(gè)節(jié)點(diǎn),都要調(diào)用一下搜索

別人的方法:

只遍歷一次樹(shù),但是將值保存下來(lái),這樣每一遇到要查詢的時(shí)候就調(diào)用hash查詢,這樣能夠保證只用O(n)的時(shí)間就完成任務(wù)。

這里面要明白:假設(shè) 樹(shù)有兩個(gè)元素 a+b=k,遍歷的時(shí)候先遇到了a,這時(shí)候在hash表中查詢b=k-a,沒(méi)有查詢到,保存a到hash表,繼續(xù)遍歷,遇到b,查詢hash表a=k-b,成功。所以這種方法只要樹(shù)里面存在滿足要求的元素,一定能查詢的到

question 3 建立二叉樹(shù)

給定一組列表,要求建立二叉樹(shù),根節(jié)點(diǎn)為列表中最大的元素,左子樹(shù)由列表左邊建立(以最大元素為界),右子樹(shù)由列表右邊建立

我的方法:

這個(gè)題目很適合用遞歸的方法做:

1.找到列表的最大數(shù),將列表分成兩部分

2.用最大數(shù)建立根節(jié)點(diǎn),遞歸用子列表建立子節(jié)點(diǎn)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容