這70道算法題你都會的話,可以直接去字節跳動了!
前言

知識的廣度來自知識的深度,學習如果不成體系那是多可怕的一件事兒,希望我們在未來的學習道路上堅守初心,不要給自己留下遺憾,以自己喜歡的方式生活,做自己喜歡做的事,做一個獨一無二的自己!
1.說一下什么是二分法?使用二分法時需要注意什么?如何用代碼實現?
2.什么是斐波那契數列?用代碼如何實現?
3.有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第四個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
4.什么是冒泡排序?用代碼如何實現?
5.什么是選擇排序?用代碼如何實現?
6.什么是插入排序?用代碼如何實現?
7.什么是快速排序?用代碼如何實現?
8.什么是堆排序?用代碼如何實現?
9.字符串循環左移
字符串
1.字符串的全排列
2.KMP算法
3.DFA和NFA
4.KMP應用:PowerString問題
5.求字符串的最長回文子串
6.Manacher算法和BM算法
數組
1.尋找和為定值的兩個數
3.Hash函數
4.分支限界法
5.荷蘭國旗問題:現有紅、白、藍三個不同顏色的小球,亂序排列在一起,請重新排列這些小球,使得紅白藍三色的同顏色的球在一起。這個問題之所以叫荷蘭國旗,是因為我們可以將紅白藍三色小球想象成條狀物,有序排列后正好組成荷蘭國旗。
6.完美洗牌算法
樹
1.二叉查找樹
2.二叉樹的遍歷
3.平衡二叉樹
4.平衡二叉樹
4.樹和B樹
5.N 叉樹
6.紅黑樹
常問的樹面試問題:
1.找到一個二叉樹的高度
2.找到一個二叉搜索樹中第 k 個最大值
3.找到距離根部“k”個距離的節點
4.找到一個二叉樹中給定節點的祖先(ancestors)
字典樹
常見的字典樹面試問題:
1.計算字典樹中的總字數
2.打印存儲在字典樹中的所有單詞
3.使用字典樹對數組的元素進行排序
4.使用字典樹從字典中形成單詞
5.構建一個T9字典
鏈表、棧與遞歸
1.鏈表、棧與遞歸:鏈表相加
2.鏈表的部分翻轉
3.鏈表劃分
4.排序鏈表中去重
5.由LCA引出指針和遞歸問題
6.單鏈公共結點問題
7.括號匹配
8.最長括號匹配
9.逆波蘭表達式RPN
10.直方圖矩形面積:給定n個非負整數,表示直方圖的方柱的高度,同時,每個方柱的寬度假定都為1;試找出直方圖中最大的矩形面積。
另一個直方圖例題:收集雨水問題:給定n個非負整數,表示直方圖的方柱的高度,同時,每個方柱的寬度假定都為1。若使用這樣形狀的容器收集雨水,可以盛多少水量
下面是幾種類型的鏈表:
1.單鏈表(單向)
2.雙鏈表(雙向)
鏈表的基本操作:
1.InsertAtEnd —— 在鏈表末尾插入指定元素
2.InsertAtHead —— 在鏈表頭部插入指定元素
3.Delete —— 從鏈表中刪除指定元素
4.DeleteAtHead —— 刪除鏈表的第一個元素
5.Search —— 返回鏈表中的指定元素
6.isEmpty —— 如果鏈表為空,返回 true
常問的鏈表面試問題:
1.翻轉列表
2.檢測鏈表中的循環
3.返回鏈表中倒數第 n 個節點
4.移除鏈表中的重復值
圖論
1.圖的遍歷和搜索-廣度優先遍歷BFS
2.單詞變換問題
3.圖的遍歷和搜索-深度優先搜索DFS
4.八皇后問題:在8×8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即任意兩個皇后都不能處于同一行、同一列或同一斜線上,問有多少種解法
5.LCA-Tarjan算法
6.最短路徑SPF
7.Floyd算法
8.帶負權的最短路徑Bellman-ford算法
9.最小生成樹MST
10.拓撲排序
圖的類型:
1.無向圖
2.有向圖
在編程語言中,圖可以表示為兩種形式:
1.鄰接矩陣
2.鄰接列表
常見的圖遍歷算法:
1.廣度優先搜索
2.深度優先搜索
常問的圖面試問題:
1.實現廣度優先搜索和深度優先搜索
2.檢查一個圖是否為樹
3.計算一張圖中的邊的數量
4.找到兩個頂點之間的最短路徑
圖像處理算法
1、常用邊緣檢測有哪些算子,各有什么特性?
2.簡述BP神經網絡,AdBoost的基本原理?
3.關鍵字static的作用是什么?
4.簡述C,C++程序編譯的內存分配情況?
5.圖像處理題目
數據結構
1.交換排序
2.冒泡排序
3.快速排序
4.插入排序(Insertion Sort)
5.希爾排序(Shell Sort)
6.選擇排序
7.堆排序(Heap Sort)
8.歸并排序
9.線性時間非比較類排序
10.計數排序(Counting Sort)
11.桶排序(Bucket Sort)
12.基數排序(Radix Sort)
堆棧
1.Push——在頂部插入元素
2.Pop—— 從堆棧中刪除后返回頂部元素
3.isEmpty——如果堆棧為空,則返回 true
4.Top ——返回頂部元素,但不從堆棧中刪除
常見的堆棧面試問題
1.使用堆棧計算后綴表達式
2.對堆棧中的值進行排序
3.檢查表達式中的括號是否平衡
隊列的基本操作:
1.Enqueue() —— 向隊列末尾插入元素
2.Dequeue() —— 從隊列頭部移除元素
3.isEmpty() —— 如果隊列為空,則返回 true
4.Top() —— 返回隊列的第一個元素
常問的隊列面試問題:
1.使用隊列來實現堆棧
2.顛倒隊列中前 k 個元素的順序
3.使用隊列生成從 1 到 n 的二進制數
哈希表
哈希數據結構的性能取決于以下三個因素:
1.哈希函數
2.哈希表的大小
3.碰撞處理方法
常問的哈希面試問題:
1.找到數組中的對稱對
2.追蹤遍歷的完整路徑
3.查看一個數組是否為另一個數組的子集
4.檢查給定數組是否不相交
最后
AI 數據結構
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。