iT邦幫忙

algorithm相關文章
共有 358 則文章
鐵人賽 自我挑戰組 DAY 2

技術 Day-2 複雜度分析

何謂複雜度 通常在解題或打競程時都會看到題目有時間與記憶體限制,而這基本上會跟你程式的時間/空間複雜度(Time/Space Complexity)有關。 ex...

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

技術 [Day 7] Sorting — Insertion Sort / Merge Sort

今天就透過一些有趣的短片來解釋 Insertion Sort 和 Merge Sort 吧 ~ Insertion Sort Insertion Sort 通...

鐵人賽 自我挑戰組 DAY 1

技術 Day-1 簡介

簡介 首次參與鐵人賽,我將在為期 30 天的比賽中,分享我多年來在參加比賽中所學到的資料結構和演算法知識。我將深入探討這些主題的概念,同時不定時比較高中和大學競...

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

技術 [Day 6] Sorting — Bubble Sort / Selection Sort

Sorting 剛開始先介紹排序,把數字由小排到大或由大排到小。 以下是相關排序演算法的時間複雜度跟空間複雜度 今天是 Bubble Sort 和 Selec...

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

技術 [Day 5] Tree / Graph

Tree Tree(樹)是一種資料結構,是具有樹狀結構性質的資料集合,根朝上,而葉朝下,它具有以下的特點: 每個節點都只有有限個子節點或無子節點 沒有父節點...

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

技術 [Day 4] Hash Table / Heap

Hash Table Hash Table(哈希表),是透過 Hash Function 計算出一個 key 與 value 所對應的位置,進而建立雜湊表格,而...

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

技術 [Day 3] Stack / Queue

今天要實做兩個著名的資料結構 Stack 和 Queue Stack 是一種後進先出(Last-In-First-Out,LIFO)的資料結構,其中最後添加...

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

技術 [Day 2] 環境設定 / Array / Linked List

第 2 天開始了!!! 環境設定 本身作業系統是用 Ubuntu 22.04.3 LTS 所以環境設定僅供參考 其他作業系統可以參考這篇 建立可用指令編譯與執行...

技術 [LeetCode 筆記] 287. Find the Duplicate Number

前言   這題是一題把陣列當成類似 linked list 的題目,目標是找到陣列中重複的元素,因它只對陣列進行了兩次循環,而每次循環都是線性時間的運作,時間複...

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

技術 [Day 1] Why Kotlin ?

開賽前言 以前都有想過用一種程式語言實作基本演算法,之前試過 C++ 和 Python,不過寫幾天後就沒碰了 :) 這次是透過 Kotlin ~ 以前在 Mo...

鐵人賽 DevOps DAY 5

技術 Day 05: 演算法與 Big O Notation

學習原因: 已經有寫程式的基本能力,需要開始對程式的效能有點概念。雖然說先求有,再求好,但也得知道什麼是好。不要求每次都寫出最佳解,但至少要學會判斷哪個比較好。...

技術 [LeetCode 筆記] 56. Merge Intervals

前言   這題運用雙指針來實作,目標是把陣列中的元素重疊的部分合併起來,有使用到合併和排序的演算法,時間複雜度估為 O(n log n),這裡有 JAVA 和...

達標好文 技術 [LeetCode 筆記] 200. Number of Islands

前言   這題是一個經典的 DFS 深度優先搜尋問題,聽說是 FAANG 高頻題(?,目標是在二維陣列裡找到連續出現 1 的範圍 (島嶼),計算島嶼共出現幾個,...

技術 [LeetCode 筆記] 33. Search in Rotated Sorted Array

前言   這題主要運用到二分搜尋法,是 704. Binary Search 的變化題,目標是找到一個旋轉陣列中指定元素的陣列,用到一個 while 迴圈和其餘...

技術 [LeetCode 筆記] 215. Kth Largest Element in an Array

前言   解這題最重要的是學習 Quick Sort 快速排序演算法是如何運作的,實作中間也可學到遞迴的概念,題目目標是把陣列從小到大排序後,找到給定的元素大小...

技術 [LeetCode 筆記] 206. Reverse Linked List

前言   這是一題單向鏈結串列反轉的題目,運用指標的算法,目標是將原本的鏈結串列倒序排列,此演算有使用到一個 while 迴圈,則時間複雜度估 O(n),這裡有...

技術 [LeetCode 筆記] 11. Container With Most Water

前言   這題是一個運用雙指標的算法,目標是找到可裝最多水的容器 (面積),只需一個 while 迴圈就可依依遍歷到最大的面積答案,時間複雜度可估 O(n),這...

技術 [LeetCode 筆記] 15. 3Sum

前言   這題是一個運用指標的算法,而且是用三個指標來追蹤,運用指標依序掃瞄出題目所要的元素並加起來,使用到了 for、while 兩個迴圈,時間複雜度估達 O...

技術 [LeetCode 筆記] 53. Maximum Subarray

前言   這題是一個經典的動態規劃問題,目標是找到一個陣列中連續子陣列的合還有回傳最大值,時間複雜度可達 O(n),這裡有 JAVA 和 Python 的寫法。...

技術 [LeetCode 筆記] 704. Binary Search

前言   這題用的技巧是二分搜尋法,原理是每次循環都會將搜索範圍縮小一半。演算法通常需要使用二分思想,即每次能夠排除一半的範圍,快速的找出陣列中所要求的元素位置...

技術 [LeetCode 筆記] 118. Pascal's Triangle

前言   這題的大方向是要如何找到上一行的上一列的元素來做兩兩相加的運算,像是動態規劃的邏輯思考,需要用到雙迴圈的關係,時間複雜度達 O(n²),這裡有 JAV...

技術 [LeetCode 筆記] 35. Search Insert Position

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

技術 [LeetCode 筆記] 283. Move Zeroes

前言   這題題目要設法將陣列中的非零元素全部往前移,題目要求不能配置新的空間,所以不能使用輔助的 Array,那我們就由本身的陣列來做循環添加,這是比較簡單的...

技術 [LeetCode 筆記] 136. Single Number

前言   這題目的邏輯是找出陣列中只出現過一次的元素,直覺是用一層 for 迴圈遍歷整個陣列後,使用 HashMap 來儲存元素跟出現的次數,最後再遍歷 Map...

技術 [LeetCode 筆記] 169. Majority Element

前言   這題目的邏輯是找出陣列中出現次數過半的元素,這裡有使用一層 for 迴圈遍歷整個陣列後,用 HashMap 來操作存儲查找,Map 時間可以視為常數時...

技術 [LeetCode 筆記] 121. Best Time to Buy and Sell Stock

前言   究竟何時才是買賣股票的最好時機呢? 這題邏輯很生活化,就是把一個陣列內所有的價格遍歷完,低買高賣後把最大的差價回傳出來,這題使用了單迴圈遍歷陣列裡所有...

技術 [LeetCode 筆記] 1. Two Sum

前言   我想這題是正要開始寫 LeetCode 的人,大部分的人的第一題吧,這題是個基本題算在 easy 的題型,看到題目直接就會想到使用雙迴圈的寫法,不過雙...

LeetCode Top 100 Liked 系列 第 77 篇

技術 [Day 72 ] Remove Element (Easy)

27. Remove Element Solution 1: Two Pointer + Swap class Solution: def remove...

LeetCode Top 100 Liked 系列 第 76 篇

技術 [Day 71] Word Search (Medium)

79. Word Search Solution 1: DFS class Solution: def exist(self, board: List[...

LeetCode Top 100 Liked 系列 第 75 篇

技術 [Day 70] Min Stack (Medium)

155. Min Stack Solution 1: Use Two Stack class MinStack: def __init__(self)...