iT邦幫忙

algorithm相關文章
共有 327 則文章
鐵人賽 JavaScript DAY 13

技術 Day 12|導航為什麼不能只靠 BFS?

上一篇我們討論 BFS 時,用了一個很適合它的問題: 從 A 到 F,最少要經過幾個站? 只要每經過一個站,都把它看成相同的一步,BFS 就能一層一層往外搜...

鐵人賽 JavaScript DAY 11

技術 Day 10|捷運最少經過幾站:為什麼 BFS 很適合?

上一篇談到 DFS 時,我們做了一個很明確的選擇: 先沿著一條路一路走到底 這是一種搜尋策略。但如果今天問題換方向了呢? 假設我們面前不是迷宮,而是一張捷運...

鐵人賽 JavaScript DAY 10

技術 Day 9|在迷宮裡一路走到底:DFS 在做什麼?

昨天我們終於把 Graph 從紙上的線條,變成程式真的能保存的資料。例如一張簡化的路網: 我們可以用 Adjacency List 表示: const grap...

鐵人賽 JavaScript DAY 3

技術 Day 2|排隊為什麼需要 Queue?

你走進超商,前面已經有三個人在排隊。你站到隊伍最後面,等待前面的人依序結帳。我甚至不用特別講,你也能腦補這個機制: 第一個來的人先結帳 第二個來的人接著結帳...

鐵人賽 JavaScript DAY 2

技術 Day 1|資料結構到底在解決什麼問題?

如果要用 JavaScript 儲存一群資料,我們其實很容易想到一個最直覺的答案: const users = ["Alice", &quo...

鐵人賽 JavaScript DAY 1

技術 當 AI 已經會寫程式,我們為什麼還要學資料結構與演算法?

現在如果想寫一個 Queue、Binary Search,甚至 Dijkstra,最簡單的方法可能已經不是打開課本,而是直接問 AI。幾秒鐘後,我們就能得到一段...

技術 流量控制演算法:Leaky Bucket 與 Token Bucket

在設計網路服務時,流量控制和資源管理是非常重要的課題。當系統面臨大量 Requests 或突發流量時,無限制地接受 Request 可能導致資源耗盡或服務中斷。...

技術 Day23 X Leetcode:排序顏色 Sort Colors

前言 今天要解的題目是 Sort Colors(排序顏色)。題目給我們一個陣列 nums,這個陣列裡包含 0、1 和 2,分別代表紅色、白色和藍色。現在要求我...

技術 Day19 X Leetcode:二元樹的直徑 Diameter of Binary Tree

這次我們來解一道二元樹的題目:Diameter of Binary Tree,這道題目的關鍵在於找到二元樹中兩個節點之間的最長路徑,這段路徑稱為「直徑」。 接...

技術 [一天至少一題直到ICPC開賽009]解題: Line Trip(12/18)

Line Trip 題目連結 原本想說隨便找一題簡單的來寫,沒想到如此簡單(尷尬) 打題群組,找志同道合的朋友一起努力進群連結 解題 找出兩地最大的距離...

技術 [LeetCode筆記] 34. Find First and last Position of Element in Sorted Array

前言   這題標準運用了二分搜尋法,演算法通常需要使用二分思想,即每次能夠排除一半的範圍,快速的找出陣列中所要求的元素位置,這樣時間複雜度可達 O(log n)...

技術 [LeetCode 筆記] 198. House Robber

前言   這題是一題動態規劃問題,目標是擷取不連續的元素,全部相加起來選出最優解,因只用了一層迴圈,時間複雜度可估 O(n),這裡有 JAVA 和 Python...

技術 [LeetCode 筆記] 238. Product of Array Except Self

前言   這題有點類似 Prefix Sums 的概念,目標是找到陣列中元素自己以外的所有元素的乘績,放在一個新的陣列裡,雖然有三個迴圈是 O(3n) 的時間複...

鐵人賽 自我挑戰組 DAY 30

技術 Day30 - 從競賽程式學習資料結構與演算法-最後總結

終於到最後一天了,在這過程中有著無數次催隊友快點發文,也有幾次差點忘記需要寫文,甚至最近因為社團的事情和比賽沒有什麼時間可以寫文章,所以內容越來越簡單,不過終究...

鐵人賽 自我挑戰組 DAY 29

技術 Day29 - 動態規劃經典題-背包問題

問題 這邊一樣以 AtCoder Educational DP Contest 的類題來舉例,這題是 D - Knapsack 1,題意大概是有一個背包,裡面只...

鐵人賽 自我挑戰組 DAY 28

技術 Day28 - 動態規劃例題-不定型

問題 這邊一樣以 AtCoder Educational DP Contest 的類題來舉例,這題是 C - Vacation,題意簡單來說就是每天都可以進行一...

鐵人賽 自我挑戰組 DAY 27

技術 Day27 - 動態規劃經典題-爬樓梯問題(再改)

問題 這邊一樣以 AtCoder Educational DP Contest 的類題來舉例,這題是 B - Frog 2,簡單來說一隻青蛙可以一次走 ~...

鐵人賽 自我挑戰組 DAY 26

技術 Day26 - 動態規劃經典題-爬樓梯問題(改)

問題 這邊以 AtCoder Educational DP Contest 的類題來舉例,這題是 A - Frog 1,簡單來說一隻青蛙可以一次走兩步或是走一步...

技術 [LeetCode 筆記] 560. Subarray Sum Equals K

前言   這題學習目標是 Prefix Sums 前綴和的概念, Prefix Sums 通常用於需要頻繁查詢陣列中某一區間的元素和的情況,這裡目標是找到一個陣...

鐵人賽 Kotlin DAY 30
Kotlin is all you need 系列 第 30

技術 [Day 30] Backtracking — Subset Sum

Algorithm Subset Sum 是一個組合優化問題。 給定一個集合(或數組)中的一些整數,是否可以從中選出一些數,使它們的和等於一個特定的目標值。 問...

鐵人賽 自我挑戰組 DAY 23

技術 Day23 - 動態規劃(Dynamic Programming)

概念 動態規劃,簡稱 DP,是一種演算法的設計概念。其核心思想是通過解決許多相似性質的小問題,來計算我們所關心的大問題的答案。通常,這些小問題之間存在著遞迴關係...

鐵人賽 Kotlin DAY 29
Kotlin is all you need 系列 第 29

技術 [Day 29] Backtracking — Graph Coloring

Algorithm Graph Coloring 是一種圖論中的應用問題,它通常用來解決如何為一個給定的圖中的每個節點分配一種顏色,使得相鄰的節點不具有相同的顏...

鐵人賽 自我挑戰組 DAY 22

技術 Day22 - 貪心(greedy)

概念 貪心,又稱為貪婪演算法,簡單來說它的運作模式就是每一步選擇都選擇當下最好的選項,或是選擇不會比其他選擇還要糟的選項,所以其實大多數時候在實作 greedy...

鐵人賽 Kotlin DAY 28
Kotlin is all you need 系列 第 28

技術 [Day 28] Backtracking — Hamiltonian Cycle

Algorithm Hamiltonian Cycle 是圖論中的一個重要概念,它描述了在一個給定的圖中是否存在一條環路,該環路包含圖中的每個節點,並且只經過每...

鐵人賽 Kotlin DAY 27
Kotlin is all you need 系列 第 27

技術 [Day 27] Backtracking — Sudoku Solver

Algorithm 數獨是一個經典的數字拼圖遊戲,目標是填充一個9x9的方格,使每一列、每一行和每一個3x3的小方格內都包含1到9的數字,並且不重複。 解數獨的...

鐵人賽 自我挑戰組 DAY 21

技術 Day21 - 分治(divide & conquer)

前言 今天的主題是一個演算法的設計方式和思維,因此不會提供具體的例題或實作細節,只會探討以這種設計方式所開發的演算法,以幫助大家理解 概念 分治又稱為「各個擊破...

鐵人賽 自我挑戰組 DAY 20

技術 Day-20 廣度優先搜尋例題講解

前言 今天有兩題相關題目,希望大家可以透過這兩題更加熟悉 BFS 的應用、如何撰寫與實作細節 UVa 439 - Knight Moves 題目說明 有一面西洋...

鐵人賽 Kotlin DAY 26
Kotlin is all you need 系列 第 26

技術 [Day 26] Backtracking — N-Queens Problem

Algorithm N-Queens Problem 目標是在一個大小為N×N的棋盤上放置N個皇后,使得這些皇后彼此不攻擊。 在這個問題中,皇后可以攻擊位於同一...

鐵人賽 自我挑戰組 DAY 19

技術 Day-19 廣度優先搜尋

概念 廣度優先搜尋通常會與深度優先搜尋放在一起比較,因為它們都是圖的走訪方式。前面有提到深度優先搜尋會找出每一種組合,而廣度優先搜尋可以找出最佳方式。以走迷宮的...

鐵人賽 Kotlin DAY 25
Kotlin is all you need 系列 第 25

技術 [Day 25] Backtracking

Backtracking 是一種用於解決組合問題、排列問題和搜索問題的演算法。 它通常用於試圖找到所有可能的解,或者找到滿足特定條件的解。 這個方法是一種遞迴的...