面試必刷-《劍指offer》刷題小結

image

----2020年7月12日更新----
朋友做了一個很方便的組隊打卡小程序,UI和功能都很棒,歡迎大家體驗使用。
傳送門→ https://ojeveryday.com/#/submit

本人師弟做的視頻講解系列傳送門→:https://space.bilibili.com/473759444

目錄

  1. 寫在前面
  2. 正文
  3. 數據結構類題目
  4. 具體算法類題目
  5. 組隊學習

寫在前面

面試季來了,不管是作為面試者還是以后作為面試官,了解算法這門程序員之間的溝通方式都是非常必要的。

找過工作的朋友應該都聽說過《劍指offer》,筆者也是戰5渣,本文主要對我這十多天刷過的《劍指offer》做個簡單的分類小結,方便后面專項復(練)習~

劍指offer推薦刷題地址:

我的所有AC題解(Python語言),每道題都寫了點自己的思路:
https://github.com/nlpjoe/Coding4Interviews

正文

筆者是NLP方向,這兩篇相關方向的面經寫得很不錯:

https://zhuanlan.zhihu.com/p/36387348

https://zhuanlan.zhihu.com/p/45802662

如果您是高分段選手,看完覺得不用刷題,請點(x)然后私信我,務必要收下我這個好朋友= ̄ω ̄=

《劍指offer》剖析了80個典型的編程面試題,系統整理基礎知識、代碼質量、解題思路、優化效率和綜合能力這5個面試要點。但是我刷題只有??途W上的66題。

如果是單純的面試需求,劍指offer的優先級肯定是在Leetcode之前,總的說它有三個優點:

  • 1.很可能在面試中出現原題
  • 2.約66題,題量少,但是涵蓋的內容較全
  • 3.能培養一個良好的刷題習慣

它的缺點是:

  • 1.只有66題,刷著容易過擬合
  • 2.動態規劃的題比較少,因此需要在Leetcode上專項訓練。

算法題主要分成數據結構具體算法部分,簡單歸類如下。基本每道題都很精彩,所以這里就不一一洗寫了,題解可以看看我的代碼倉庫或者討論區的內容。

數據結構類題目

  • LinkedList
    • 003-從尾到頭打印鏈表
    • 014-鏈表中倒數第k個結點
    • 015-反轉鏈表
    • 016-合并兩個或k個有序鏈表
    • 025-復雜鏈表的復制
    • 036-兩個鏈表的第一個公共結點
    • 055-鏈表中環的入口結點
    • 056-刪除鏈表中重復的結點
  • Tree
    • 004-重建二叉樹
    • 017-樹的子結構
    • 018-二叉樹的鏡像
    • 022-從上往下打印二叉樹
    • 023-二叉搜索樹的后序遍歷序列
    • 024-二叉樹中和為某一值的路徑
    • 026-二叉搜索樹與雙向鏈表
    • 038-二叉樹的深度
    • 039-平衡二叉樹
    • 057-二叉樹的下一個結點
    • 058-對稱的二叉樹
    • 059-按之字形順序打印二叉樹
    • 060-把二叉樹打印成多行
    • 061-序列化二叉樹
    • 062-二叉搜索樹的第k個結點
  • Stack & Queue
    • 005-用兩個棧實現隊列
    • 020-包含min函數的棧
    • 021-棧的壓入、彈出序列
    • 044-翻轉單詞順序列(棧)
    • 064-滑動窗口的最大值(雙端隊列)
  • Heap
    • 029-最小的K個數
  • Hash Table
    • 034-第一個只出現一次的字符
    • 065-矩陣中的路徑(BFS)
    • 066-機器人的運動范圍(DFS)

具體算法類題目

  • 斐波那契數列
    • 007-斐波拉契數列
    • 008-跳臺階
    • 009-變態跳臺階
    • 010-矩形覆蓋
  • 搜索算法
    • 001-二維數組查找
    • 006-旋轉數組的最小數字(二分查找)
    • 037-數字在排序數組中出現的次數(二分查找)
  • 全排列
    • 027-字符串的排列
  • 動態規劃
    • 030-連續子數組的最大和
    • 052-正則表達式匹配(我用的暴力)
  • 回溯
    • 065-矩陣中的路徑(BFS)
    • 066-機器人的運動范圍(DFS)
  • 排序
    • 035-數組中的逆序對(歸并排序)
    • 029-最小的K個數(堆排序)
    • 029-最小的K個數(快速排序)
  • 位運算
    • 011-二進制中1的個數
    • 012-數值的整數次方
    • 040-數組中只出現一次的數字
  • 其他算法
    • 002-替換空格
    • 013-調整數組順序使奇數位于偶數前面
    • 028-數組中出現次數超過一半的數字
    • 031-整數中1出現的次數(從1到n整數中1出現的次數)
    • 032-把數組排成最小的數
    • 033-丑數
    • 041-和為S的連續正數序列(滑動窗口思想)
    • 042-和為S的兩個數字(雙指針思想)
    • 043-左旋轉字符串(矩陣翻轉)
    • 046-孩子們的游戲-圓圈中最后剩下的數(約瑟夫環)
    • 051-構建乘積數組

節奏與方法

我個人覺得數據結構和DP在面試中手寫代碼的幾率比較高,因此筆者目前的刷題節奏主要是:

劍指offer->Leetcode動態規劃->面試前再過一遍劍指offer

每個人基礎不一樣,不過我覺得刷題還是要全職專項的刷。

有個重要的點是:每道題做完一定要去討論區!

討論區有非常精簡的大神級代碼,你好不容易AC了一道題準備去討論區吹(裝)水(逼),點開一看,“握草,還可以這樣”。

思考為什么他可以寫出這么好的代碼,把每道題的思路理解后用筆記本記錄下來,爭取刷到融會貫通,即看見有個題能自動歸類到某個方面,這樣有一定好處。面試最重要的是讓面試官日后能愿意與你以后一起工作,因此溝通交流非常重要。比如有時候面試需要交流,看著像是一道排序的題做不出來,就可以跟面試官交流:“我有幾個不成熟的想法,一排序,二動態規劃,三是直接搜索算法”,面試官可能就給個提示:“你先用排序試試吧“。

當然筆者還沒到這境界,等面試結束后再來寫后續部分吧。

組隊學習

刷題我是和幾個熟人一起刷的。如果您找不到伙伴一起刷題,可以微博(愛編程的周鳥)聯系我,或者微信聯系我:echoooo741(不一定能加)

私信暗號“Leetcode組隊刷題”,自動拉您入群。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容