演算法0 介紹

2021-08-08 01:13:11 字數 1376 閱讀 7605

由於要找工作,最近刷了點題,看了點書,做了些校招筆試,總結一些演算法筆試的要點吧。

1. 題目

筆試的時候,第一步還是要認真讀題,這個沒什麼好說的,題都不懂是做不下去的。

2. 解題思路

在讀完題目的時候,不要急著動手寫**。

這一步要做的是理清思路,可以借助畫圖等工具。

這一步的最終目標是得到演算法流程圖。

3. 輸入輸出

筆試的時候通常會有兩種型別,

一種是不需要輸入輸出,直接在函式引數中給出要處理的資料,然後通過返回值返回。

另外一種是需要輸入輸出,需要輸入輸出的又分為兩種:

1. 通過終端輸入輸出

2. 通過檔案輸入輸出

4. 資料結構

演算法筆試的時候通常要借助於一些常用的資料結構,比如:陣列/字串/鍊錶/樹/棧/佇列/雜湊表/集合等。

陣列和字串是兩種最基本的資料結構,它們分別用連續記憶體儲存數字和字元。

鍊錶和樹需要大量的指標操作,因此對指標操作要特別熟悉。

棧是乙個和遞迴緊密相關的資料結構。

佇列於廣度有限遍歷演算法相關。

5. 演算法

5.1 遞迴與迴圈

掌握遞迴的思想與執行流程,以及遞迴與迴圈之間的相互轉換。

常見的題目包括:1~n求和,漢諾塔問題,斐波那契級數列。

5.2 查詢

查詢無非就是順序查詢,二分查詢,雜湊表查詢,二叉樹查詢。

其中順序查詢,二分查詢都是按照一定的規則在原有的資料上進行查詢,

雜湊表查詢/二叉樹查詢是要構造乙個特殊的資料結構,因此需要額外的儲存空間。

5.3 排序

排序是演算法中最基本的乙個問題,因此各種演算法也比較成熟,

需要對各種演算法的思想/實現/複雜度/優化/穩定性爛熟於心。

常見的排序演算法包括:氣泡排序/選擇排序/插入排序/歸併排序/快速排序/堆排序/希爾排序等,其中插入排序、歸併排序、快排、堆排較為常用,要重點掌握。

5.4 貪心

5.5 分治

將現有問題劃分成若干不相關的子問題,分別求解。

5.6 動態規劃

將現有問題劃分成若干相關的子問題,

尋找子問題的最優子結構,尋找遞迴式。

採用自頂向下分析,自底向上的解法。

因為在子問題求解中,通常會有大量重複的計算,因此需要乙個額外的容器去儲存已經計算的值,比如hashmap,這樣就會減少一些重複計算。

常見的題目包括:

1維:青蛙跳台階,鋼條切割問題

5.7 回溯法

5.8 位運算

6. 測試用例

功能性測試:是否能達到題目的要求。

特殊輸入測試:比如空指標,輸入的是字串而不是數字等。

7. 提高**質量

8. 編碼風格

參考谷歌**風格

演算法0介紹 排序

是指解題方案準確而完整的描述,是一系列解決問題的清洗的指令,演算法代表著用系統的方法描述解決問題的策略機制.也就是說,能夠對一定規範的輸入,在有限時間內獲得所求的輸出.程式 演算法 資料結構 演算法的可行性與空前複雜度,時間複雜度 大資料下,犧牲精度換取速度.是一種儲存和組織資料的方式,意在便於訪問...

OpenGL教程 0 介紹

opengl介紹 opengl,全稱open graphics library,是乙個用c語言寫的圖形api。通俗地說,opengl用來繪製2d 3d圖形。目前opengl的運用十分廣泛,有許多用opengl編寫的優秀作品。opengl是乙個跨平台的圖形庫,也就是說它不僅可以在windows上使用,...

深度學習 0 介紹

人工智慧 讓機器具備人的思維和意識。人工智慧的三大學派 1.行為主義 基於控制論,構建感知 動作控制系統。2.符號主義 基於算術邏輯表示式,求解問題是先把問題描述為表示式,再求解。3.聯結主義 仿生學,模仿神經元連線關係。中心思想 當網路將大量簡單的計算單元連線在一起時,可以實現智慧型行為。機器學習...