iT邦幫忙

資料結構與演算法相關文章
共有 322 則文章

技術 【演算法新手村】[初階]筆記05 - 前綴和(二維)

書接上回:【演算法新手村】[初階]筆記04 - 前綴和(一維) 接著上篇一維前綴和的概念,我們這篇進入二維空間。當資料從一條線變成一個平面(矩陣),我們該如何...

技術 【演算法新手村】[初階]筆記04 - 前綴和(一維)

首先我們要引入一個問題,我要求一個陣列中從頭到某一項的和要怎麼辦呢? 這邊默認第幾項都是口語上的用法,也就是首項是第 1 項 你會說簡單啊,直接遍歷陣列不...

技術 【演算法新手村】[初階]筆記03 - 二分練習題

書接上回:【演算法新手村】[初階]筆記02 - 初識二分之常見問題 二分答案會有點困難,可以多思考,只要能掌握那怕毛皮,那你也是終於"略懂&quot...

技術 【演算法新手村】[初階]筆記02 - 初識二分之常見問題

前置知識:【演算法新手村】[初階]筆記01 - 初識二分之二分搜尋配合使用效果更佳喔XD 二分搜尋的題目有不少,這邊講一些簡單的(難的跳過,請新手上路者放心食...

技術 【演算法新手村】筆記01 - 初識二分之二分搜尋

作為大多數人一開始學程式就學到的搜尋演算法,不過多引入介紹,這邊主要提一些基本概念 線性搜尋法 Linear Search 又稱循序搜尋法,這是最直觀的方法(把...

技術 模型、算法、模型結構、數據模型、訓練到底是不是一回事?看這裏就對了!

我們在看一些機器學習、人工智能、數據倉庫方面的資料時,經常會出現「神經網絡」、「深度學習算法」、「非監督學習」、「大模型」、「邏輯模型」等高頻詞彙。這些詞語有時...

鐵人賽 Software Development DAY 24

技術 Ch 23. 怎麼查字典最快?

還記得在我們程式碼重構的第一天,把難用的資料形狀,改成了比較好處理的資料形狀嗎? //// 不好用的資料形狀 var itemPrice = [ {name...

技術 【吳桑泥的淬鍊升級書單】Day9 演算法的度量尺:Big O 是什麼?學會分析程式碼的效率

演算法的度量尺:Big O 是什麼?學會分析程式碼的效率 當你的程式碼在生產環境「卡死」時,你才發現演算法的重要性 不知道大家有沒有這樣的經驗:你寫了一個「看...

鐵人賽 Software Development DAY 22

技術 Day 22 — Dijkstra(單源最短路徑,非負權)

一、學習目標 正確判斷 Dijkstra 的適用條件:邊權 ≥ 0。 熟練最小堆(priority_queue with greater) 的寫法與「鬆弛(r...

鐵人賽 Software Development DAY 21

技術 Day 21 — DP 綜合挑戰

一、學習目標 把不同型態的 DP(計數型、最佳化型、線性 DP、環狀 DP、字串 DP)串起來。 熟練「狀態定義 → 轉移 → 初始條件 → 答案位置」的完整...

鐵人賽 Software Development DAY 20

技術 Day 20 — DP + 貪心混合(區間排程)

一、學習目標 分辨何時用 貪心(依結束時間排序)、何時用 DP(帶權區間排程)。 熟悉帶權區間 DP:排序、預處理 prev(相容區間)、二分查找轉移。 能將...

鐵人賽 Software Development DAY 19

技術 Day 19 — 狀態壓縮 DP(子集合 DP)

一、學習目標 了解以 bitmask 表示子集合與其時間/空間複雜度 掌握 dp[mask](或 dp[mask][i])的狀態設計與轉移。 熟悉 子集合枚舉...

鐵人賽 Software Development DAY 18

技術 Day 18 — 區間 DP(Interval DP)

一、學習目標 把題目抽象成 dp[l][r]:表示處理區間 [l..r] 的最佳值/最少代價。 會寫兩大形態的轉移: 兩端取數:dp[l][r] 來自 dp...

鐵人賽 Software Development DAY 17

技術 Day 17 — 最長遞增子序列(LIS)

一、學習目標 會定義 LIS(Longest Increasing Subsequence) 與「嚴格遞增 vs 非嚴格遞增」的差異。 熟練兩種做法: O(...

鐵人賽 Software Development DAY 16

技術 Day 16 — 背包問題(0/1、完全背包)

一、學習目標 理解兩大類背包:0/1(每件最多一次)vs 完全(可重複拿)。 會寫出正確的雙迴圈順序,避免重複/漏算: 0/1:容量倒序。 完全:容量正序。...

鐵人賽 Software Development DAY 15

技術 Day 15 — 動態規劃(DP)入門:從 0 到 1

一、學習目標 會把問題抽象成:狀態、轉移、初始值、答案位置、迭代順序(五步驟)。 熟悉一維 DP 的兩大類: 計數型(有幾種方法):例 Dice、Climb...

鐵人賽 Software Development DAY 13

技術 Day 13 — BFS + DFS 綜合應用(迷宮/擴散 + 最短路徑判定)

一、學習目標 熟悉多源 BFS(多個起點同時擴散)與單源 BFS 的配合:先以多源 BFS 建出「危險/時間場」,再用單源 BFS 找可行最短路。 了解「BF...

鐵人賽 Software Development DAY 12

技術 Day 12 — DFS 入門(遞迴與疊代、連通塊、二分圖判定)

一、學習目標 了解 DFS 的兩種實作:遞迴與疊代(顯式 stack),何時該避免遞迴以防止棧爆。 掌握三個核心觀念:visited 標記、連通塊(conne...

技術 [演算法] 桶子排序 (Bucket Sort)

桶子排序是什麼? 桶子排序是一種 把資料分類再逐一排序 的演算法。想像一下你有一堆數字,目標是從小到大排列,但這堆數字範圍很大、分布也不均勻。 因此桶子排序的想...

技術 卡爾曼濾波器應用

卡爾曼濾波器例子:追蹤汽車的位置與速度 第一步:預測(依據運動規律) 運動規律 假設汽車的運動規律如下: 位置變化: 每秒的「位置」 = 前一秒的位置 +...

技術 Collision & Handle Collisions-day 30

Collision When two or more objects happen to be hashed into the same index in th...

技術 Hash Table-day 29

The big O of finding an element with sequential search method in a traditional a...

技術 Day30 16th鐵人賽的結論與心得

首先,必須先給成功完成連續30天發鐵人賽文章的自己來一點很大的掌聲嗚嗚嗚嗚!!!OK,我們來回顧一下這30天都寫了些什麼、做了些什麼努力吧! 在這30天中,我們...

技術 Day29 Misc題目3:53. Maximum Subarray

原文題目 Given an integer array nums, find the subarray with the largest sum, and re...

技術 Day28 Misc題目2:238. Product of Array Except Self

原文題目 Given an integer array nums, return an array answer such that answer[i] is...

技術 Day27 Misc題目1:169. Majority Element

原文題目 Given an array nums of size n, return the majority element. The majority el...

技術 Day26 Trie題目:208. Implement Trie (Prefix Tree)

原文題目 A trie (pronounced as "try") or prefix tree is a tree data struct...

技術 Day25 演算法介紹:字典樹(Trie)

字典樹(Trie) 是一種專門用來處理字串(單字)的樹狀結構,特別適合解決字串(單字)集合中的「前綴匹配」問題。它的每個節點代表一個字母,並且從根節點到某個葉節...

技術 Day24 Matrix題目3:240. Search a 2D Matrix II

原文題目 Write an efficient algorithm that searches for a value target in an m x n i...

技術 Day23 Matrix題目2:73. Set Matrix Zeroes

原文題目 Given an m x n integer matrix matrix, if an element is 0, set its entire ro...