軟體工程師

A collection of 84 posts
「經典演算法」的解題技巧:動態規劃、分治、貪婪、回溯、分支限界
寫程式

「經典演算法」的解題技巧:動態規劃、分治、貪婪、回溯、分支限界

我研究了五種主要的演算法:動態規劃是分治法的特例,透過記錄子問題的解來尋求最佳解;分治法則將問題細分並利用遞迴解決;貪婪演算法則是在每一步選擇最佳選項;回溯法通過添加約束來嘗試所有可能性;分支限界法則結合了貪婪與回溯的特性,進行最優選擇並更新條件。
1 min read
[LeetCode 核心演算法] 用 100 字搞懂 Branch-and-Bound 演算法(分支限界法)
寫程式

[LeetCode 核心演算法] 用 100 字搞懂 Branch-and-Bound 演算法(分支限界法)

我的理解是,分支限界法 (Branch and Bound)有點貪婪演算法(Greedy Algorithm)和回溯法(Backtracking)的精神。(可見 回溯法(Backtracking)和 貪婪演算法(Greedy Algorithm)文章)。在每次做出選擇當下選擇最優解,並且將找到的最短路徑作為新的約束條件,若在遍歷過程中不符合此約束條件,就退回一步甚至是上幾步的計算重新選擇。
1 min read
ES6: Map 物件,特性是有順序性
寫程式

ES6: Map 物件,特性是有順序性

在這篇文章中,我深入探討了 ES6 的 Map 物件和它獨特的方法。我示範了如何使用 Map 來存儲鍵值對,並介紹了 Map 的多個操作,包括新增、取值、檢查、迭代和清空等。我還比較了 Map 與傳統 Object 的效能和特性,指出 Map 在處理大量動態鍵值對時的優勢。此外,Map 的順序性和對各種數據類型鍵的支援,使其成為一個非常靈活和強大的數據結構選項。
2 min read
CI/CD 原理的解題技巧:持續集成&持續交付/部署
寫程式

CI/CD 原理的解題技巧:持續集成&持續交付/部署

在這篇文章中,我深入探討了 CI/CD 的三個階段:持續整合(CI)、持續交付(CD)和持續部署(CD),並解釋它們在軟件開發過程中的重要性。我強調了持續整合如何幫助團隊減少整合衝突,持續交付如何保證軟件隨時可部署,以及持續部署如何實現自動化生產部署。此外,我還介紹了在 GitLab 和 Jenkins 中實施 CI/CD 的具體例子。
7 min read
CI/CD: GitHub Actions 自動部署到 GitHub Page
寫程式

CI/CD: GitHub Actions 自動部署到 GitHub Page

在這篇文章中,我探討了如何在 GitHub 上使用 GitHub Actions 來實施 CI/CD,重點介紹了如何撰寫用於持續部署的工作流程腳本。透過簡單的實例,我說明了從建立專案、手動部署、到設定自動化部署的全過程,並提供了 GitHub Actions 腳本的具體配置方法,以幫助讀者能夠更好地利用這一功能來自動化他們的部署過程。
3 min read
動態規劃與分治法(Divide-and-Conquer)的解題技巧
寫程式

動態規劃與分治法(Divide-and-Conquer)的解題技巧

在本文中,我探討了動態規劃與分治法的核心原理和應用。我說明了動態規劃是如何在分治法的基礎上,通過保存小問題的解來避免重複計算,從而提高效率。分析了這兩種方法的實際應用如費波那契數列,並對比了它們的效率。此外,我還介紹了如何使用分治法將大問題分解成小問題,進而找到最終解答的過程。
5 min read
遞迴(Recursion)的解題技巧:原理與實例
寫程式

遞迴(Recursion)的解題技巧:原理與實例

在本文中,我深入探討了遞迴(Recursion)的概念,說明其如何在程式中透過函式自我呼叫來實現循環操作。我介紹了直接遞迴和間接遞迴的不同類型,並用費波那契數列和正整數階乘等經典問題來展示遞迴的應用。此外,我也比較了遞迴與迭代的差異,並探討了動態規劃如何優化遞迴操作,以減少計算重複和提高效率。
5 min read
前端面試常見考題的解題技巧(1-2 年)
寫程式

前端面試常見考題的解題技巧(1-2 年)

在這篇文章中,我深入探討了網頁生命週期的各個階段,從用戶輸入網址到網頁結束,並解釋了如何通過各種前端技術來處理和優化這一過程。我也提到了如何使用不同的 HTTP 方法來執行 CRUD 操作,以及跨瀏覽器兼容性問題的解決方案。此外,我還討論了如何運用 CSS 盒模型來改善頁面布局,以及動畫的實現和性能優化技巧。
5 min read
LeetCode: Array 類型筆記的解題技巧(Easy)
寫程式

LeetCode: Array 類型筆記的解題技巧(Easy)

在這篇文章中,我介紹了在解題過程中常用的九種方法,並針對不同的題目展示這些方法的實際應用。從使用 Set 處理重複值到利用 XOR 找出單獨的元素,每種方法都能有效解決特定的問題。這些技巧包括矩陣操作、數值計算及排序等,旨在提供一個全面的解題工具箱,幫助理解和掌握應對各種編程挑戰的策略。
6 min read
「排序法」的解題技巧:泡泡排序等經典排序法
寫程式

「排序法」的解題技巧:泡泡排序等經典排序法

在這篇文章中,我介紹了幾種基本的排序方法,包括選擇排序、泡沫排序、插入排序、合併排序以及快速排序。我闡述了每種排序法的時間複雜度和空間複雜度,並通過具體的 JavaScript 實例和動畫來展示每個排序算法的具體運作過程。這些排序方法涵蓋了從基本到較為進階的技術,幫助讀者理解各種排序技術在實際應用中的表現及效率。
5 min read
Regex(正則表達式)的解題技巧:快速理解與實作
寫程式

Regex(正則表達式)的解題技巧:快速理解與實作

在這篇文章中,我介紹了正則表達式(Regex)的基本概念和實作方法。透過具體的例子和說明,我解釋了如何使用 Regex 進行字串搜索、替換以及數據驗證等操作,並探討了其在不同編程環境中的適用性。我也提供了一些實用的線上工具推薦,以幫助理解和視覺化 Regex 的匹配過程,讓讀者能夠更有效地運用這一強大的工具。
7 min read