大廠校招軟件崗位高頻面試筆試題


以下內容爲300分鐘搞定算法面試的學習筆記。總結在公衆號“跟小新一起玩編程”。

img

基礎數據結構

數組、字符串

鏈表

特點:數據元素個數不確定,經常需要刪除或者插入元素而不是經常訪問某個元素。

應用:

  • 快慢指針(有時候三個指針):鏈表翻轉、尋找鏈表倒數第k個元素、尋找鏈表中間位置元素、判斷鏈表是否有環。
  • 構建一個虛假的鏈表頭,優點是不需要判斷鏈表是否爲空,刪除和插入簡單了,返回時返回鏈表頭的下一個元素:兩個排序鏈表進行整合;將鏈表的分離,前半部分是奇數,後半部分是偶數。

特點:後進先出。

基本思想:只關心最後一次的操作,處理完上一次的操作,能在o(1)的時間內查找到更新前的一次操作。

LeetCode:20有效的括號;

LeetCode:739每日溫度。

隊列

特點:先進先出

應用:廣度優先遍歷

雙端隊列

隊列的頭尾兩端能在o(1)的時間內進行數據的查看、添加和刪除。

常用場景:實現一個長度動態變化的窗口或連續區間

LeetCode:239 滑動窗口的最大值

樹的問題考查遞歸算法的熟練程度。

常考的樹:普通的二叉樹;平衡二叉樹;完全二叉樹;二叉搜索樹;四叉樹

遍歷:前序遍歷(樹的創建)、中序遍歷(如果是二叉搜索樹,遍歷結果是排序好的,LeetCode 230題)、後序遍歷(LeetCode 250題)

高級數據結構

優先隊列

與普通隊列的區別:保證每次取出的元素是隊列中優先級最高的,優先級自定義。

最常用的場景:從雜亂無章的數據中按照一定的順序篩選數據。例如:一個數組的前K大的數據。

本質:本質是一個二叉堆,利用一個數組結構來實現完全二叉樹。

LeetCode:347 前K個高頻元素

最基本知識點:度、有向圖、無向圖、連通圖。

圖的算法:圖的遍歷——深度優先與廣度優先;環的檢測;拓撲排序;最短路徑算法(Dijkstra、Floyd);連通性相關——求解孤島數量、旅行商問題、圖的着色。

必須掌握的算法:

1.圖的存儲和表達方式:鄰接矩陣、鄰接鏈表

2.圖的遍歷:深度優先和廣度優先 (重要)

基於圖的遍歷的算法:二分圖的檢測、環的檢測

3.最短路徑

4.並查集

LeetCode :785 判斷二分圖

前綴樹

前綴樹葉稱字典樹,例如:給定一系列構成字典的字符串,需要在字典中找出所有以“ABC”開頭的字符串。使用前綴樹。

LeetCode:212 單詞搜索2

我已經爲大家整理好pdf,歡迎關注公衆號“跟小新一起玩編程”獲取。
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章