補(bǔ)充10道題(10/10)
1.求矩陣中最大數(shù)的個(gè)數(shù)
特別注意ops是2-d的
我的答案:
顯然吭服,operation里面的列表和順序是沒有關(guān)系的,最大值和len(operation)有關(guān)藐不,而最大值的個(gè)數(shù)和row 和col的最小值的乘積有關(guān)(因?yàn)樽钚±蚶迹悦恳淮?1都會參與)
別人的答案:
想法一樣浅乔,但是用zip來分開兩個(gè)列表倔喂。注意星號(*)的使用,表示收集輸入的參數(shù)靖苇,用元組來打包席噩。首先*ops先解包,zip函數(shù)的參數(shù)輸入可以為0~n任意
*ops會將列表轉(zhuǎn)換成len(ops)長度的元組,作為函數(shù)參數(shù)傳遞進(jìn)入zip,zip再將對應(yīng)位置的元素提取組成新的元組輸出
比如ops=[[1,2,3],[4,5,6]] 則 *ops=(1,2,3),(4,5,6)
所以zip(*ops)== zip((1,2,3),(4,5,6))
2.求兩個(gè)列表的交集
利用內(nèi)置的數(shù)據(jù)結(jié)構(gòu)set能夠很容易的解決這個(gè)問題
假如不用內(nèi)置的數(shù)據(jù)結(jié)構(gòu)贤壁,可以考慮用hash 表悼枢,也就是用字典結(jié)構(gòu)
方法一: 速度86.51%
方法二:速度 55%
方法三:33%
question 3:
我的答案:
question 4 刪除鏈表中的指定節(jié)點(diǎn)
給定一個(gè)鏈表,要求刪除鏈表值為指定值的節(jié)點(diǎn)
答案:典型的鏈表操作題目
別人的答案:用遞歸函數(shù)找到鏈表的最底端脾拆,再重新構(gòu)建鏈表
首先在這道題目里面會因?yàn)殒湵硖L而導(dǎo)致遞歸深度太大而超時(shí)馒索,但是這種簡潔的代碼和遞歸思想很好,值得學(xué)習(xí)
question 5 比較兩個(gè)二叉樹?
給定兩個(gè)二叉樹名船,比較這兩個(gè)樹是不是相同的(結(jié)構(gòu)绰上,值)
我的答案:
直接利用遞歸方法檢查
qusetion 6 查詢一個(gè)二叉樹的最小深度
給定一個(gè)二叉樹,找出最小深度
我的答案:
利用遞歸思想渠驼,統(tǒng)計(jì)每一個(gè)節(jié)點(diǎn)的深度蜈块,有兩種情況 :
沒有子節(jié)點(diǎn):深度為1? 有子節(jié)點(diǎn):深度為2
將每個(gè)節(jié)點(diǎn)的深度取最小值加起來,就是最小深度了迷扇。
這里有一種情況是??? 2
???????????????????????????? /
???????????????????????? 1
那么對于節(jié)點(diǎn) 1百揭,深度為1,對于節(jié)點(diǎn)2蜓席,左子節(jié)點(diǎn)深度為1器一,右子節(jié)點(diǎn)深度為0
假如返回 1+min(DR+DL)顯然結(jié)果為 1,不符合
像這種情況需要特別處理厨内,對于這樣的不平衡節(jié)點(diǎn)祈秕,母節(jié)點(diǎn)的深度應(yīng)該是自身加上最大的子節(jié)點(diǎn)深度
qusetion 7查詢一個(gè)二叉樹的最大深度
這類問題的相似:查找二叉樹的最大深度渺贤。顯然最大深度就沒有上面的問題了,對于不平衡的節(jié)點(diǎn)(一邊有子節(jié)點(diǎn)踢步,一邊沒有子節(jié)點(diǎn))肯定是取最大的子節(jié)點(diǎn)深度癣亚。所以任何情況都是去子節(jié)點(diǎn)的最大深度
答案:
question 8:字符串查找
給定兩個(gè)字符串丑掺,看是不是每一個(gè)字符都相等
我的答案:
簡單的hash表查詢
注意下面注釋掉的方法也是可行的获印,但是時(shí)間復(fù)雜度是 O(4N)
用字典查詢是 O(2N)
結(jié)果也顯示第一種方法(62ms)用的時(shí)間是第二種(112ms)的一半
別人的方法:
實(shí)際上思路是一樣的,但是代碼就簡潔很多
用了字典方法get來建立字符串統(tǒng)計(jì)街州,就避免了啰嗦的邏輯判斷兼丰,這點(diǎn)值得學(xué)習(xí)
question 9:最大回文長度?
給定一個(gè)字符串,返回最大可組成的回文長度
我的答案:
直接統(tǒng)計(jì)字符串唆缴,對于出現(xiàn)偶數(shù)次(2n)的鳍征,整體都能構(gòu)成回文。對于出現(xiàn)奇數(shù)次(2n-1)的面徽,有2n-1-1能構(gòu)成回文艳丛,最后再只出現(xiàn)一次的字符中選一個(gè)出來,就是整體的回文了
question 10:翻轉(zhuǎn)鏈表