新手村導讀 - 10: 基礎演算法

更新於 發佈於 閱讀時間約 2 分鐘

前言

在開始寫文章、整理之前留下的紀錄時,想起剛出社會時也有去面試演算法工程師的職位,然後被電到慘兮兮 XD,把當時面試有碰到的一些題目分享給大家,讓大家可以有點心理準備(?)

基礎題

解釋複雜度

可以分成時間複雜度與空間複雜度去解釋,在此附上簡易版本:

  • O(1):陣列讀取
  • O(n):線性搜尋
  • O(log n):二分搜尋
  • O(nlogn):合併排序
  • O(n²):選擇排序
  • O(2^n):費波那契數列

介紹五大演算法

我想這個內容在大家求學時期應該都有學過了,但當下被問還是突然講不出來。基本上除了窮舉這個不算方法的方法以外,還有貪婪演算法、動態規劃、分治法、回溯法以及分支法。

介紹排序

有蠻多公司都會考這題,會需要你介紹你所記得的排序方法以及他們的複雜度分析。由於種類蠻多的,因此將比較詳細的介紹放在參考資料第 4 點。

介紹 DP

這是一種將問題複雜度下降的方式,將原本的問題切分成小問題去解決,乍聽之下很容易但其實蠻看經驗和技術的,在 Leetcode 中也蠻多題目會需要用 DP 去解決,一樣將相關資料放在參考資料第 5、6 點。

應用題

由於這方面的文章很多 & 內容很長,因此我就不特別列出解法,不然篇幅會被拉的很長,我僅提供我碰過的題目給大家參考。

  • 實作費氏數列與複雜度分析
  • 如何解決八皇后問題
  • 利用蒙地卡羅方法求圓周率

結語

「演算法是要由內而外去思考,而非直接從題目表面去下手。」這是我之前準備面試時在某個部落格上看到的一句話,在此送給有想要當演算法工程師的各位,加油!

參考資料:

  1. https://jason-chen-1992.weebly.com/home/time-space-complexity
  2. 五大常用演算法總結 - 程式人生 (796t.com)
  3. 【Day35】[演算法]-常見的演算法策略Algorithmic Patterns - iT 邦幫忙::一起幫忙解決難題,拯救 IT 人的一天 (ithome.com.tw)
  4. 【演算法】排序演算法 Sorting Algorithm - Jason Chen's Blog (weebly.com)
  5. 從LeetCode學演算法 - 9 Dynamic Programming (2) | by Chih-Yu Lin | Medium
  6. dynamic_programming_2_inclass.pdf (ntu.edu.tw)
留言
avatar-img
留言分享你的想法!
avatar-img
林柏宇的沙龍
2會員
44內容數
test
林柏宇的沙龍的其他內容
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/27
JWT(JSON Web Token)是基於 JSON 格式的開放標準,主要用於身份驗證與權限確認。本文介紹了JWT的基本結構,並闡述其特點,如降低資料庫壓力、靈活性及無狀態性。JWT 特別適用於分佈式系統。本篇將協助讀者深入理解 JWT 的重要性與實際應用。
Thumbnail
2025/04/20
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
Thumbnail
2025/04/20
本文介紹了容器的基本概念、組成部分以及其在應用開發中的重要性,特別是對初階和高階工程師的影響。透過深入探討容器的優點,以及Docker、Kubernetes和ArgoCD等相關技術,幫助讀者理解容器化的應用與管理,進而簡化開發過程並提高效率。適合對容器技術感興趣的開發者從零開始學習與掌握。
Thumbnail
2025/04/13
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
Thumbnail
2025/04/13
本文探討自動化測試的核心理念與實際應用,涵蓋如何模擬運行環境、確保程式碼在各種情境下的穩定性,以及進行錯誤處理的方法。文中指出自動化測試的各種優點,並提到設計測試的注意事項。透過使用相關工具和方法,讀者可以有效進行功能測試,並掌握相關技巧以應對常見問題,讓開發過程更為順利。
Thumbnail
看更多
你可能也想看
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
「欸!這是在哪裡買的?求連結 🥺」 誰叫你太有品味,一發就讓大家跟著剁手手? 讓你回購再回購的生活好物,是時候該介紹出場了吧! 「開箱你的美好生活」現正召喚各路好物的開箱使者 🤩
Thumbnail
這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。包括運算子的簡介、賦值運算子、算術運算子、遞增/遞減、比較運算子、邏輯運算子。
Thumbnail
這篇內容,將會講解什麼是運算子,以及與運算子相關的知識。包括運算子的簡介、賦值運算子、算術運算子、遞增/遞減、比較運算子、邏輯運算子。
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
中學數學基礎練習—一元一次方程式
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
本文提供了一個關於模擬法演算法的問題,介紹了操作指令的格式及其解析。透過程式碼模擬每條指令,找出回到根目錄所需的操作次數。本文詳細說明瞭模擬法的複雜度分析,能夠幫助讀者更好地理解這個問題。
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
高中數學主題練習—對數方程式
Thumbnail
演算法映射化簡的核心觀念 在面對新題目的時候,除了重頭想一個新的演算法之外; 還有另一個方法,想看看有沒有核心觀念彼此相同的問題與演算法, 如果有,就可以把新的題目映射化簡到已知解法的問題,用已知的演算法去解開。 接著,我們會介紹幾個範例,並且使用映射化簡的技巧來解題,透過化
Thumbnail
演算法映射化簡的核心觀念 在面對新題目的時候,除了重頭想一個新的演算法之外; 還有另一個方法,想看看有沒有核心觀念彼此相同的問題與演算法, 如果有,就可以把新的題目映射化簡到已知解法的問題,用已知的演算法去解開。 接著,我們會介紹幾個範例,並且使用映射化簡的技巧來解題,透過化
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News