字符串
【3】最長(zhǎng)回文子串
【3】最長(zhǎng)無(wú)重復(fù)子串
【1*】字符串轉(zhuǎn)數(shù)字
【4】KMP 算法
【2】字符串全排列
【2*】翻轉(zhuǎn)字符串
動(dòng)態(tài)規(guī)劃
【2】背包問(wèn)題
【3】連續(xù)子數(shù)組的最大和
【4】實(shí)現(xiàn)簡(jiǎn)單的正則表達(dá)式匹配
數(shù)組
【3】求兩個(gè)等長(zhǎng)、有序數(shù)組的中位數(shù)(二分法)
【4】求兩個(gè)不等長(zhǎng)、有序數(shù)組的中位數(shù)
【3】旋轉(zhuǎn)數(shù)組求最小值婴削、【3】旋轉(zhuǎn)數(shù)組求查找某個(gè)值是否存在(二分法)
【4*】每行從左到右玛迄,每列從上到下遞增的二維數(shù)組中,判斷某個(gè)數(shù)是否存在(劍指 offer 第 3 題)
【3*】數(shù)組中出現(xiàn)次數(shù)超過(guò)一半的數(shù)字
【3*】第 k 大的數(shù)(拓展:最大的 k 個(gè)數(shù))
【3*】有序數(shù)組中某個(gè)數(shù)字出現(xiàn)的次數(shù)(提示:利用二分搜索)
鏈表
【2】反轉(zhuǎn)鏈表(使用遞歸和迭代兩種解法哪痰,了解頭插法)
【3】刪除鏈表的當(dāng)前節(jié)點(diǎn)
【3】刪除倒數(shù)第 k 個(gè)節(jié)點(diǎn)
【1】?jī)蓚€(gè)有序鏈表合并
【4】復(fù)雜鏈表的復(fù)制
【2*】判斷鏈表是否有環(huán)
【3*】?jī)蓚€(gè)鏈表的第一個(gè)公共節(jié)點(diǎn)(提示:考慮鏈表有環(huán)的情況)
【3】刪除鏈表中重復(fù)節(jié)點(diǎn)
樹(shù)
【3】根據(jù)中序和后序遍歷結(jié)果重建二叉樹(shù)、【3】根據(jù)中序和前序遍歷結(jié)果重建二叉樹(shù)
【2】翻轉(zhuǎn)二叉樹(shù)
【2】從上往下打印二叉樹(shù) (BFS 的思想)
【3】判斷某個(gè)數(shù)組是不是二叉樹(shù)的后序遍歷結(jié)果 (劍指 offer 第 24 題)
【3】二叉樹(shù)中和為某個(gè)值的路徑
【3*】二叉樹(shù)中某個(gè)節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn) (強(qiáng)烈推薦準(zhǔn)備一下,劍指 offer 第 58 題)
棧
【2】用兩個(gè)棧實(shí)現(xiàn)隊(duì)列步做、【2】用兩個(gè)隊(duì)列實(shí)現(xiàn)棧
【2】實(shí)現(xiàn)一個(gè)棧,可以用常數(shù)級(jí)時(shí)間找出棧中的最小值
【3】判斷棧的壓棧奈附、彈棧序列是否合法(劍指offer 第 22 題)
排序
了解以下排序的時(shí)間全度、空間復(fù)雜度,是否穩(wěn)定斥滤,實(shí)現(xiàn)原理
歸并排序将鸵、拓展:求數(shù)組中的逆序?qū)€(gè)數(shù)
快速排序 重點(diǎn):partion 函數(shù)的實(shí)現(xiàn)
堆排序
數(shù)組元素值域已知時(shí)勉盅,考慮 基數(shù)排序 和 桶排序
位運(yùn)算
【2】給一個(gè)十進(jìn)制數(shù)字,求它的二進(jìn)制表示中顶掉,有多少個(gè) 1 (n &= n - 1)
【3】給一個(gè)數(shù)組草娜,所有數(shù)字都出現(xiàn)了偶數(shù)次,只有一個(gè)出現(xiàn)了一次痒筒,找出這個(gè)數(shù)
【4】給一個(gè)數(shù)組宰闰,所有數(shù)字都出現(xiàn)了三次,只有一個(gè)出現(xiàn)了一次簿透,找出這個(gè)數(shù)
【3】給一個(gè)數(shù)組移袍,所有數(shù)組都出現(xiàn)了偶數(shù)次,只有兩個(gè)數(shù)字出現(xiàn)了一次老充,找出這兩個(gè)數(shù)