C++常見面試問題彙總3——算法

  • 時間複雜度的計算方式(Master公式計算遞歸函數的時間複雜度)
  • 紅黑樹的瞭解(平衡樹,二叉搜索樹),使用場景

平衡樹是爲了解決二叉查找樹退化爲鏈表的情況,而紅黑樹是爲了解決平衡樹在插入、刪除等操作需要頻繁調整的情況。

  • 紅黑樹在STL上的應用
  • 貪心算法和動態規劃的區別
  • 判斷一個鏈表是否有環,如何找到這個環的起點
  • 實現一個strcpy函數(或者memcpy),如果內存可能重疊呢
  • 實現一個循環隊列
  • 排序算法(寫快排,歸併排序,堆排序),算法的時間複雜度,空間複雜度,是否穩定等
  • 快排存在的問題,如何優化
  • 反轉一個鏈表
  • Top K問題(可以採取的方法有哪些,各自優點?)
  • Bitmap的使用,存儲和插入方法
  • 二叉樹的先序、中序、後序遍歷(非遞歸實現)
  • 二叉樹的公共祖先(簡單地說,劍指offer上的題大都是高頻題)
  • 1-n中有多少個1
  • 字典樹(前綴樹)的理解以及在統計上的應用
  • 並查集的實現(低頻)
  • 數組的全排列
  • N個骰子出現和爲m的概率
  • 海量數據問題(可參考左神的書)
  • 一致性哈希
  • 線段樹的實現(一般是區間求解問題,低頻)
  • KMP,Manacher,Bfprt算法(進階)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章