面試題總結-數據結構與算法

排序

冒泡排序-比較交換

快速排序-劃分-比較交換-遞歸

選擇排序-選擇-比較交換

查找

二分查找

二叉樹

二叉樹的前序、中序、後序遍歷(遞歸實現)

二叉樹的前序、中序、後序遍歷(非遞歸實現)

判斷一棵樹是否爲二叉平衡樹

鏈表

鏈表的翻轉

判斷鏈表是否有環?若有環,則求該環的長度?並求其連接點?

  • 鏈表是否有環
一個快指針(走2步),一個慢指針(走1步),都從頭開始:
	若有環則它們相撞(設碰撞點爲x);
	若無環則快指針遇到空則跳出循環;
  • 求鏈表環的長度
從碰撞點x開始,又走(一個走一步,一個走兩步),當再次碰撞時,它們走的次數爲環的長度
  • 求連接點
記住結論:碰撞點到連接點的距離等於頭結點到連接點的距離。兩個指針(都一次一步),一個從頭走,一個從碰撞點走,第一次碰撞的節點就是連接點

如何快速查找鏈表的中間節點?(只遍歷一次)

建立兩個指針,一個指針一次遍歷一個節點,一個指針一次遍歷兩個節點,當快指針遍歷到空節點時,慢指針指向的位置即爲鏈表的中間位置

兩個棧實現隊列

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