先看幾個經典的算法面試題
字符串匹配問題:程序員
- 有一個字符串 str1="程序員 程序員你程序 程序員你程序員你程序員你好",和一個子串 str2="程序員你程序員你"
- 如今要判斷str1是否含有str2,若是存在,就返回第一次出現的位置,反之返回-1
- 要求用最快的速度來完成匹配,你的思路是什麼?
- 暴力匹配【簡單,可是效率低】
- KMP算法《部分匹配表》
漢諾塔遊戲:
請完成漢諾塔遊戲的代碼,要求:
- 將A塔的全部圓盤移動到C塔。
- 在小圓盤上不能放大圓盤。
- 在三根柱子之間一次只能移動一個圓盤。

八皇后問題
八皇后問題,是一個古老而註明的問題,是回溯算法的經典案例。該問題是國際西洋棋棋手馬克斯·貝瑟爾於1848年提出:在8X8格的國際象棋上擺放八個皇后,使其不能互相攻擊,即:任意兩個皇后都不能處於同一行、同一列或同一斜線上,問有多少種擺法。【92種】面試
- 分治算法

馬踏棋盤算法算法
- 馬踏棋盤算法也被稱爲騎士周遊問題
- 將馬隨機放在國際象棋的8X8棋盤Board[0~7] [0~7]的某個方格中,馬按走棋規則(馬走日字)進行移動。要求每一個方格只進入一次,走遍棋盤上所有64個方格
- 會使用到圖的深度優化遍歷算法(DFS)+ 貪心算法優化

數據結構和算法的重要性
- 算法是程序的靈魂,優秀的程序能夠在海量數據計算時,依然保持高速計算。
- 通常來說,程序會使用了內存計算框架(好比Spark)和緩存技術(好比Redis等)來優化程序,再深刻思考一下,這些計算框架和緩存技術,它的人核心功能是哪一個部分?
- 拿實際工做經從來說,在Unix下開發服務器程序,功能是要支持上千萬人同時在線,在上線前,作內側,一切OK,但是上線後,服務器就支撐不住了,公司的CTO對代碼進行優化,再次上線,卻堅固如石。你就能感覺到程序是有靈魂的,這就是算法。
- 目前程序員面試的門檻愈來愈高,不少一線大廠,都會有數據結構和算法的面試題。
- 若是你不想永遠都是代碼工人,那就跟我一塊兒來花時間研究一下數據結構與算法。
PS:共同窗習,一塊兒進步!
數據結構和算法的概述
數據結構和算法的關係:
- 數據(data)結構(structure)是一門研究組織數據方式的學科,有了編程語言也就有了數據結構,學好數據結構能夠編寫出更加漂亮,更加高效的代碼。
- 要學習好數據結構就要多多考慮如何將生活中遇到的問題用程序去實現解決
- 程序=數據結構+算法
- 數據結構是算法的基礎,換言之,想要學好算法,須要把數據結構學到位。