【面試錦囊】14種模式搞定面試算法編程題(1-7)

2021-02-21 機器學習初學者

面試錦囊之知識整理系列

面試錦囊系列一直有收到大家的反饋,包括後臺內推成功的消息、朋友的同事從創業小公司成功跳到huawei等等,非常高興小破號的這些整理分享能夠真正地幫助到大家,以後也會繼續。為了更方便大家的交流溝通,我們建立了算法面試討論組,感興趣的小夥伴可以訂閱後臺回復"面試"加入

好了不廢話啦,今天文章的主題就是分享14種解決面試算法編程題的思路(來自educative[1]),經過本人之前筆試面試經驗證明確實確實非常非常高頻,一定要十分熟悉。對於每一種思路會給出

enjoy!

1、滑動窗口

滑動窗口模式用於對給定數組或鍊表的特定窗口大小執行所需操作,例如查找包含所有1的最長子序列。滑動窗口從第一個元素開始,每次向右移動一個元素並根據要解決的問題調整窗口的長度。在某些情況下,窗口的大小保持不變,而在其他情況下,大小會增大或縮小。

應用場景

okay,理解了滑動窗口原理之後,那麼什麼情況下我們會需要用到它呢?

題目要求查找最長/最短的子字符串、子數組或所需的值舉個慄子

來看看實際應用滑動窗口解決的問題

2、雙指針

雙指針的基本思想是使用兩個指針串聯迭代數據結構,知道一個或兩個指針達到某個條件停止。在排序數組或鍊表中搜索元素對時,兩個指針通常很有用, 例如將數組的每個元素與其他元素進行比較時。

通常我們需要兩個指針是因為如果只採用單個指針,必須不斷循環數組才能找到答案。這種解決方案雖然確實可行,但是對時間和空間複雜度來說明顯是低效的

應用場景問題為排序數組或鍊表,並且需要滿足某些約束的一組元素問題舉個慄子3、快慢指針

也被稱為「龜兔算法」,基本思想是使用兩個指針以不同的速度在數組或鍊表中移動。在處理循環連結列表或數組時,此方法非常有用。通過以不同的速度移動(例如,在循環鍊表中),算法證明兩個指針必然會相遇。一旦兩個指針都處於循環循環中,快速指針就應該捕獲慢速指針。

應用場景舉個慄子4、合併區間

合併間隔模式是處理重疊間隔的有效技術。在涉及間隔的許多問題中,你可以需要找到重疊間隔或合併間隔(如果它們重疊)。給定兩個間隔

應用場景出現「overlapping intervals」一詞舉個慄子5、樹的寬度優先搜索(Tree BFS)

該模式基於廣度優先搜索(BFS)技術來遍歷樹,並使用隊列在跳到下一層之前記錄下該層的所有節點。使用這種方法可以有效地解決涉及以逐級順序遍歷樹的任何問題。Tree BFS模式的基本思想是將根節點push到隊列然後不斷迭代直到隊列為空。對於每次迭代,刪除隊列頭部的節點並「訪問」該節點。從隊列中刪除每個節點後,我們還將其所有子節點push進隊列。

應用場景舉個慄子6、樹的深度優先搜索(Tree DFS)

樹DFS基於深度優先搜索(DFS)技術來遍歷樹。Tree DFS的基本思想是使用遞歸(或迭代方法的堆棧)在遍歷時跟蹤所有先前(父)節點。從樹的根開始,如果節點不是葉子,則需要做三件事:

決定是立即處理當前節點(先序遍歷),還是在之間處理兩個子節點(中序遍歷)或處理兩個子節點之後(後序遍歷)。為當前節點的兩個子節點進行兩次遞歸調用來處理它們。應用場景舉個慄子求根到葉子節點數字之和(LEETCODE)[19]從中序與後序遍歷序列構造二叉樹(LEETCODE)[21]7、Subset

大量的編程面試問題涉及處理一組給定元素的排列和組合。Subsets模式描述了一種有效的廣度優先搜索(BFS)方法來處理所有這些問題。例如給定一個數組 [1, 5, 3]

將第一個數字(1)添加到所有現有子集,以創建新的子集: [[], [1]]繼續添加[[], [1], [5], [1, 5]][[], [1], [5], [1, 5], [3], [1, 3], [5, 3], [1, 5, 3]]應用場景舉個慄子本文參考資料[1]

educative: https://hackernoon.com/14-patterns-to-ace-any-coding-interview-question-c5bb3357f6ed

[2]

滑動窗口的最大值(劍指offer): https://www.nowcoder.com/practice/1624bc35a45c42c0bc17d17fa0cba788?tpId=13&tqId=11217&tPage=4&rp=4&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking

[3]

滑動窗口中位數(LEETCODE): https://leetcode-cn.com/problems/sliding-window-median/

[4]

最小覆蓋子串(LEETCODE): https://leetcode-cn.com/problems/minimum-window-substring/

[5]

K 個不同整數的子數組(LEETCODE): https://leetcode-cn.com/problems/subarrays-with-k-different-integers/

[6]

無重複字符的最長自創(LEETCODE): https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/

[7]

接雨水(LEETCODE): https://leetcode-cn.com/problems/trapping-rain-water/

[8]

長度最小的子數組(LEETCODE): https://leetcode-cn.com/problems/minimum-size-subarray-sum/

[9]

環形鍊表(LEETCODE): https://leetcode-cn.com/problems/linked-list-cycle/

[10]

相交鍊表(LEETCODE): https://leetcode-cn.com/problems/intersection-of-two-linked-lists/

[11]

環形鍊表入口節點(LEETCODE): https://leetcode-cn.com/problems/linked-list-cycle-ii/

[12]

合併區間(LEETCODE): https://leetcode-cn.com/problems/merge-intervals/

[13]

會議室(LEETCODE): https://leetcode-cn.com/problems/meeting-rooms-ii/

[14]

Range模塊(LEETCODE): https://leetcode-cn.com/problems/range-module/

[15]

區間列表的交集(LEETCODE): https://leetcode-cn.com/problems/interval-list-intersections/

[16]

N叉樹的層序遍歷(LEETCODE): https://leetcode-cn.com/problems/n-ary-tree-level-order-traversal/

[17]

二叉樹的層序遍歷(LEETCODE): https://leetcode-cn.com/problems/binary-tree-level-order-traversal/

[18]

二叉樹的鋸齒形層次遍歷: https://leetcode-cn.com/problems/binary-tree-zigzag-level-order-traversal/

[19]

求根到葉子節點數字之和(LEETCODE): https://leetcode-cn.com/problems/sum-root-to-leaf-numbers/

[20]

二叉樹的最大深度(LEETCODE): https://leetcode-cn.com/problems/maximum-depth-of-binary-tree/

[21]

從中序與後序遍歷序列構造二叉樹(LEETCODE): https://leetcode-cn.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/

[22]

路徑總和系列(LEETCODE): https://leetcode-cn.com/problems/path-sum/

[23]

子集系列(LEETCODE): https://leetcode-cn.com/problems/subsets/

[24]

字母大小寫全排列(LEETCODE): https://leetcode-cn.com/problems/letter-case-permutation/

[25]

列舉單詞的全部縮寫(LEETCODE): https://leetcode-cn.com/problems/generalized-abbreviation/

[26]

單詞子集(LEETCODE): https://leetcode-cn.com/problems/word-subsets/

本站qq群1003271085,加入微信群請回復「加群

獲取一折本站知識星球優惠券,請回復「知識星球

喜歡文章,點個在看

相關焦點

  • 【面試錦囊】14種模式搞定面試算法編程題(8-14)
    面試錦囊之知識整理系列
  • 14種模式搞定面試算法編程題(PART II)
    面試錦囊之知識整理系列
  • 14種模式搞定面試算法編程題(PART I)
    面試錦囊之知識整理系列
  • 14種模式解決面試算法編程題(PART II)
    種模式解決面試算法編程題(PART I)8、樹的寬度優先搜索(Tree BFS)該模式基於廣度優先搜索(BFS)技術來遍歷樹,並使用隊列在跳到下一層之前記錄下該層的所有節點。從樹的根開始,如果節點不是葉子,則需要做三件事:應用場景涉及樹的先序、中序或者後續遍歷問題如果問題涉及搜索節點離葉子更近的目標舉個慄子10、Subset大量的編程面試問題涉及處理一組給定元素的排列和組合。Subsets模式描述了一種有效的廣度優先搜索(BFS)方法來處理所有這些問題。
  • 百道Python面試題實現,搞定Python編程就靠它
    在這篇文章中,我們將介紹一個 Python 練習題項目,它從算法練習題到機試實戰題提供了眾多問題與解決代碼。在春招之前,我們就曾介紹過 GitHub 萬星的 ML 算法工程師面試指南,它提供了完整的面試知識點、編程題及題解、各科技公司的面試題錦等內容。讀者可查閱該項目了解機器學習面試需要準備哪些知識。
  • 準備程式設計師面試?你需要了解這 14 種編程面試模式
    對很多開發者來說,編程工作的面試準備很容易讓人焦慮。面試要涉及的東西實在太多,其中很多還往往與開發者的日常工作無關,只會額外增添壓力。這種現狀導致了一個後果:現在的開發者往往需要花費數周時間在 LeetCode 等網站上了解綜合數百個問題。與我談過的開發者在面試前的一個常見焦慮問題是:我是否已經解決過足夠多的實際問題?我本可以做到更多嗎?
  • TOP 48 算法和編程面試題,牛逼啊!
    你在申請這些工作時,肯定很想知道面試官會問到哪些問題。在本文中,作者會分享一些常見的編程面試問題,這些問題來自於針對不同經驗層次的程式設計師的面試——從應屆畢業生到具有一兩年經驗的程式設計師。編程面試題通常包含數據結構和基於算法的問題,以及一些邏輯問題,例如:如何在不使用臨時變量的情況下交換兩個整數?為了清晰,編程面試題需要劃分為不同主題。
  • 你需要了解這 14 種編程面試模式
    對很多開發者來說,編程工作的面試準備很容易讓人焦慮。面試要涉及的東西實在太多,其中很多還往往與開發者的日常工作無關,只會額外增添壓力。這種現狀導致了一個後果:現在的開發者往往需要花費數周時間在 LeetCode 等網站上了解綜合數百個問題。與我談過的開發者在面試前的一個常見焦慮問題是:我是否已經解決過足夠多的實際問題?
  • 九章算法班 | 1個月搞定面試算法,更有內推等著你
    ,隨著就業行情的不斷緊縮,各種變型題、新題層出不窮。《九章算法V5.0》配套最新 LintCode OJ 題庫。根據最新的面經對配套作業題進行了大換血,在面試中遇到原題的概率更高了。哦,那下一個問題,《九章算法班》適合哪些人呢?如果你沒有算法基礎,或算法基礎薄弱;如果你希望入職Facebook, Google, Linkedin, Airbnb, Uber等矽谷知名企業;如果你面對網上紛繁複雜的面試題,不知該從哪裡開始準備;如果你想要獲取最新面試動向,結識其他一起找工作小夥伴;如果你.
  • 乾貨 | 算法和編程面試題精選TOP50!(附代碼+解題思路+答案)
    這次營長表示要翻 Java 的牌子啦~ 應大家的強烈反饋,我們找了一套 Java 語言的算法和編程的面試題。這份面試資源主要包含五部分內容:數組、鍊表、字符串、二叉樹和重要算法(如排序算法)的編程面試題,其中每部分內容我們都列出了一些最常被問到的熱門問題,並且在每個題目後給出了可以參考的解決思路和代碼,因為題目較多,我們沒有羅列所有的方法和代碼,只給出了訪問地址。相信大家在掌握了這些內容後,一定可以提升實力、信心大增。
  • 獨家 | 在Python編程面試前需要學會的10個算法(附代碼)
    本文為大家介紹了最近在Python編程面試中反覆出現的10個基礎算法問題,並且給出了相應的解答過程。
  • 九章算法班 | 贏秋招免費內推, 一個月搞定面試算法!
    ,隨著就業行情的不斷緊縮,各種變型題、新題層出不窮。《九章算法V5.0》配套最新 LintCode OJ 題庫。根據最新的面經對配套作業題進行了大換血,在面試中遇到原題的概率更高了。哦,那下一個問題,《九章算法班》適合哪些人呢?如果你沒有算法基礎,或算法基礎薄弱;如果你希望入職Facebook, Google, Linkedin, Airbnb, Uber等矽谷知名企業;如果你面對網上紛繁複雜的面試題,不知該從哪裡開始準備;如果你想要獲取最新面試動向,結識其他一起找工作小夥伴;如果你.
  • 求職FLAG必須掌握哪些算法和面試技巧?附「FB最新算法面試題」
    本文整理了近期FB 技術類職位的高頻面試題,以及FLAG大廠常見的個人背景問題、文化問題、經驗問題、技術問題、編程問題等常規性問題。同時給予了準備和回答的tips。這部分是面試中最難的,因為編程不僅是在高壓環境下進行,而且是以一種不熟悉的方式,比如白板手寫進行的,而且會有時間限制。所以要想通過編程問題面試,一定要提前多刷幾遍lintcode上的算法題。
  • 看看高薪,算法工程師面試,讓你懷疑人生
    7 小米。三面技術面。面試之後,發了意向書,直到前些日子才聯繫我。我說我已經交其他公司三方,校招結束了。編程題問了leetcode 228.今年2月份我剛過完年來學校,我同學跟我說他網易遊戲已經筆試過兩批了,我頓時覺得自己落後了很多,有種別人校招都結束了,你才剛來學校的feel,何況我比學校規定的開學時候早來了十多天,當時一頓慌張,趕緊問問師兄師姐到底什麼情況。再有就是校招面試,先是40分鐘讓寫道編程題,然後再去見面試官。
  • 學了1年java的程式設計師面試,掛在了這道基礎算法題!
    這都是java的算法題,應該來講都是些比較簡單的算法題,但是我敢說很多基礎的學習的,或者想去面試的人都會不能完整的寫出來,現在
  • 給Java程式設計師的20個鍊表面試題
    程序面試的有用資源圖片來源:unsplash.com/@charlesdeluvio如果需要一些有用的資源來幫助搞定程序和編程工作面試,以下是一些值得一看的網絡資源和書籍:1.摸索編程面試:編程問題模式傳送門:https://www.educative.io/collection/5668639101419520/5671464854355968?affiliate_id=50735186433802243.
  • BAT七年經驗,卻抵不過外企面試的兩道算法題?
    打開APP BAT七年經驗,卻抵不過外企面試的兩道算法題? 近日,一位網友在脈脈上吐槽,稱自己工作經驗豐富,去面試 Hulu(打馬賽克),結果卻是:「我就鬱悶了,在阿里工作五年,去面試 Hulu,上來啥都不問,就兩道算法題我沒有第一時間給出最優解,想了一會兒才做出來,結果就把我掛了,工作那麼多年了,還這樣面試也是令人醉了。」
  • 小米、搜狗、TW等機器學習算法工程師面試總結
    一面:1、問簡歷2、主要有幾道算法題吧:大數相乘動態規劃題有重複數字的排序數組的二分搜索問題。二面:1、問簡歷項目2、有負數存在的排序數組,按照數的絕對值進行排序3、介紹了一下搜狗搜索這邊主要負責的事情三面:1、問項目,主要問了你在這個項目中的主要職責是什麼2、從一個矩陣的左上角到右下角,只能向右或向下,一共有多少種走法?有比動態規劃時間複雜度更低的算法麼?如果有,時間複雜度是多少?
  • 高效「背誦」面試題的三定法則
    你會驚奇地發現,這些面試題無非就是這三大類,分別是有 固定答案的封閉式問題 考你理解深度的開放式問題 考你編程能力的邏輯算法題 舉例說明:
  • 備戰跳槽季:大廠面試官總結 16 大常考算法知識點
    在如今的環境下,想要換一份理想的工作更是需要「找準時機,抓住機會」,當然在面試前的準備是必不可少的。極客大學邀請了算法訓練營的助教,請他們分享一下作為面試官喜歡考察候選人哪些能力、他們有哪些「 精選算法面試題 」。我們的助教們來自美團、百度或海外的一線網際網路公司,希望他們分享的經驗可以幫助到你。