一、hashMap
數(shù)組加鏈表形式的哈希表予权,時(shí)間復(fù)雜度O(1)
二昂勉、雙向指針問(wèn)題
1. 快慢指針
a. 判斷鏈表是否有環(huán)
答:快慢指針,前進(jìn)一步和前進(jìn)兩步
b. 鏈表中有環(huán),返回環(huán)的起始節(jié)點(diǎn)
答:當(dāng)快慢指針相遇時(shí)扫腺,讓其中任一個(gè)指針重新指向頭節(jié)點(diǎn)岗照,然后讓它倆以相同速度前進(jìn),再次相遇時(shí)所在的節(jié)點(diǎn)位置就是環(huán)開(kāi)始的位置笆环。
c. 尋找鏈表中點(diǎn)
當(dāng)鏈表的長(zhǎng)度是奇數(shù)時(shí)攒至,slow 恰巧停在中點(diǎn)位置;如果長(zhǎng)度是偶數(shù)躁劣,slow 最終的位置是中間偏右:
尋找鏈表中點(diǎn)的一個(gè)重要作用是對(duì)鏈表進(jìn)行歸并排序迫吐。
回想數(shù)組的歸并排序:求中點(diǎn)索引遞歸地把數(shù)組二分,最后合并兩個(gè)有序數(shù)組习绢。對(duì)于鏈表渠抹,合并兩個(gè)有序鏈表是很簡(jiǎn)單的蝙昙,難點(diǎn)就在于二分。
d. 尋找鏈表的倒數(shù)第k個(gè)元素
答:讓快指針先走k步
2.左右指針
左右指針在數(shù)組中實(shí)際是指兩個(gè)索引值梧却,一般初始化為 left = 0, right = nums.length - 1 奇颠。
可解決問(wèn)題:
a.二分查找
b.兩數(shù)之和
c.反轉(zhuǎn)數(shù)組
//d.滑動(dòng)窗口?放航?烈拒?(待解決)
三、算法的特性
輸入广鳍、輸出荆几、可行、有窮赊时、確定
四吨铸、并行和并發(fā)的區(qū)別
并發(fā):同一時(shí)間段,多個(gè)任務(wù)都在執(zhí)行(單位時(shí)間內(nèi)不一定執(zhí)行)
并行:單位時(shí)間內(nèi)多個(gè)任務(wù)同時(shí)執(zhí)行
五祖秒、三山五岳
三山:安徽黃山诞吱、江西廬山、浙江雁蕩山
五岳:東岳山東泰山竭缝、西岳陜西華山房维、南岳湖南衡山、北岳山西恒山抬纸、中岳河南嵩山
六咙俩、隊(duì)列判斷滿和空的條件是什么?
空:
單鏈表空:頭結(jié)點(diǎn)指針域next==NULL
靜態(tài)鏈表空(就是用數(shù)組來(lái)實(shí)現(xiàn)鏈?zhǔn)酱鎯?chǔ)結(jié)構(gòu)):數(shù)組最后一個(gè)元素值為0
循環(huán)鏈表空:頭結(jié)點(diǎn)的指針域指向它本身(循環(huán)查找時(shí)以p->next !=頭結(jié)點(diǎn)作為遍歷結(jié)束條件)
検剩空 順序存儲(chǔ)時(shí):top==-1 鏈?zhǔn)酱鎯?chǔ)時(shí):top==NULL
隊(duì)列(隊(duì)頭出隊(duì)阿趁、隊(duì)尾入隊(duì))
①順序存儲(chǔ)隊(duì)列 front==rear循環(huán)隊(duì)列 front==rear
②鏈?zhǔn)酱鎯?chǔ)鏈隊(duì)列 front、rear均指向頭結(jié)點(diǎn)
滿:
單鏈表晓锻、循環(huán)鏈表:不存在
靜態(tài)鏈表:根據(jù)數(shù)組長(zhǎng)度來(lái)判斷
棧 順序存儲(chǔ)時(shí):top==數(shù)組大小-1 鏈?zhǔn)酱鎯?chǔ)時(shí):不存在
隊(duì)列
①順序存儲(chǔ)隊(duì)列 可能假溢出循環(huán)隊(duì)列 (rear+1)% QueueSize == front
②鏈?zhǔn)酱鎯?chǔ)鏈隊(duì)列 不存在
七歌焦、折半查找過(guò)程 5,13砚哆,19独撇,21,37躁锁,56纷铣,64,75战转,80搜立,88,92查找21
56槐秧,21