iT邦幫忙

algorithm相關文章
共有 318 則文章

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

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

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

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

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

鐵人賽 自我挑戰組 DAY 18

技術 Day-18 深度優先搜尋例題講解

前言 今天有兩題相關題目,一題是最簡單的應用,另一題算是經典題,希望大家可以更熟悉 DFS 的應用與如何撰寫 UVa 441 - Lotto 題目說明 給定多個...

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

技術 [Day 24] Greedy Algorithm — Minimum Spanning Tree / Shortest Path

Minimum Spanning Tree Minimum Spanning Tree 是用來解決與連通圖(Connected Graph)相關的問題。 生成樹...

鐵人賽 自我挑戰組 DAY 17

技術 Day-17 深度優先搜尋

概念 深度優先搜尋是一種圖的走訪方式。以一個圖的例子來解釋:圖上有編號為 到 的節點。如果我們從節點 開始走,我們會先往與節點 相鄰的節點走,然後一直往...

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

技術 [Day 23] Greedy Algorithm — Job Sequencing Problem / Fractional Knapsack Problem

Job Sequencing Problem Job Sequencing Problem 是一個排程問題,通常在生產和製造領域中遇到。目標是在有限的時間內,安...

鐵人賽 Kotlin DAY 17

技術 Day09#2 經典但不實用的氣泡排序

「但妳好像沒提過要我學這個啊?」勇者困惑的說。 「不學演算法和資料結構也可以寫程式。」蕭凱琪不在意地擺擺手,但勇者還是一臉不相信,所以只好說出來差別:「⋯⋯但如...

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

技術 [Day 22] Greedy Algorithm — Activity Selection Problem / Huffman Coding

Activity Selection Problem Activity Selection Problem 通常用於時間表排程或資源分配。 該問題要求在一組互相...

鐵人賽 自我挑戰組 DAY 16

技術 Day-16 二分搜尋例題講解

前言 今天講解兩題相關題目,希望大家可以透過題目更加瞭解二分搜尋使用時機 TOJ 47 / PB magic spell 題目說明 簡單來說有多筆詢問,要找出詢...

鐵人賽 自我挑戰組 DAY 15

技術 Day-15 二分搜尋

概念 二分搜尋是一種在已經排序過的資料中快速找到目標資料的高效率的演算法。這個方法建立在一個基本的觀念上:將資料集一分為二,然後根據目標資料與中間元素的大小比較...

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

技術 [Day 21] Greedy Algorithm

Greedy Algorithm Greedy Algorithm 是一種常見的演算法設計方法,通常用於求解最佳化問題。 它的基本思想是在每一步都做出當前看起來...