數(shù)組&鏈表
? ? ? ? 1. 快慢指針的方式實(shí)現(xiàn)判斷鏈表是否有環(huán)
棧和隊(duì)列
? ? ? ? 1. 棧實(shí)現(xiàn)隊(duì)列(負(fù)負(fù)得正)
? ? ? ? 2. 隊(duì)列實(shí)現(xiàn)棧(復(fù)雜一些)
? ? ? ? 3. Java API-Stack是個(gè)類马胧;Queue是個(gè)接口(LinkedList是其一個(gè)實(shí)現(xiàn)類)
優(yōu)先隊(duì)列
哈希表
樹、二叉樹、二叉搜索樹
二叉樹遍歷
? ? DFS - 遞歸代碼
? 偽代碼:? ?
? ? ? ? private void dfs(node){
? ? ? ? ? ? ? ? //1. process for current node
? ? ? ? ? ? ? ? for(kidNood in node.getKids()){
? ? ? ? ? ? ? ? ? ? //2. 如果是圖绪商,則加上判斷該kidNood是否已經(jīng)訪問過
? ? ? ? ? ? ? ? ? ? dfs(kidNood);
????????????????}
????????}
? ? BFS - 非遞歸
? ? ? ? ?private void bfs(){
? ? ? ? ? ????????queue.add(root);
? ? ? ? ? ? ? ? ? while(!queue.isEmpty()){
? ? ? ? ? ? ? ? ? ? ? ? ? ? currrentNode = queue.poll();
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//process for currentNode
????????????? ? ? ? ? ? ? ? for(kidNood?in node.getKids()){? ? ? ? ??
????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ?queue.add()
? ? ? ? ? ? ? ? ? ? ? ? ? ? }
????????????????????}????
????????}
位運(yùn)算
? ? 優(yōu)點(diǎn)嗓蘑,使用二進(jìn)制計(jì)算喻鳄,計(jì)算速度會(huì)快于十進(jìn)制末融。
? ? 缺點(diǎn)巢块,計(jì)算機(jī)思維。需要背一些常用的功能护桦。否則比較難于應(yīng)用含衔。
剪枝
? ? 應(yīng)用在搜索領(lǐng)域,為了降低計(jì)算的空間二庵。設(shè)置一些剪枝的條件贪染。深藍(lán)(國(guó)際象棋機(jī)器人)、AlphaGo 就會(huì)應(yīng)用這種
遞歸催享、分治
? - [ ] 貪心算法
? - [ ] 二分查找
? - [ ] 字典樹
? - [ ] 動(dòng)態(tài)規(guī)劃
? - [ ] 并查集