iT邦幫忙

algorithm相關文章
共有 358 則文章
鐵人賽 Software Development DAY 6

技術 Day 5 BO5-2 - Multiple Pointers

Multiple Pointers 技巧是透過建立 pointer 變數代表目前指到哪個位置 (index)。使用兩個 pointer 代表目前查找的位置與範圍...

鐵人賽 Software Development DAY 11

技術 Day 10 還敢下來啊 - Bubble Sort

一種排序資料的方式,實務上不太常使用,除了某些特定情境。相對於其他排序方式,Bubble Sort 效能較差。 儘管如此,作為基礎中的基礎,最好還是要理解其概念...

鐵人賽 Software Development DAY 5

技術 Day 4 BO5-1 - Frequency Counter

Frequency Counter 是一種解題技巧,它使用物件的鍵值 (Key) 來記錄陣列或字串裡面特定值的出現次數。它可以避免一直遍歷資料,可以有效減少時間...

鐵人賽 Software Development DAY 3

技術 Day 2 哎呀這什麼水平 - 時間與空間複雜度

在 Day 1 我們講到的複雜度表示都是指時間複雜度,在輸入的參數越多越大的情況下,所要執行的步驟(執行所需花費的時間)的增長趨勢。 我們也可以使用 Big O...

鐵人賽 自我挑戰組 DAY 4
LeetCode Top 100 Liked 系列 第 4 篇

技術 [Day 04] 3Sum (Medium)

15. 3Sum Question Given an integer array nums, return all the triplets [nums[i],...

鐵人賽 自我挑戰組 DAY 3
LeetCode Top 100 Liked 系列 第 3 篇

技術 [Day 03] Longest Palindromic Substring (Medium)

5. Longest Palindromic Substring Question Given a string s, return the longest p...

鐵人賽 自我挑戰組 DAY 2
LeetCode Top 100 Liked 系列 第 2 篇

技術 [Day 02] Longest Substring Without Repeating Characters (Medium)、Median of Two Sorted Arrays (Hard)

3. Longest Substring Without Repeating Characters (Medium) Question Given a stri...

鐵人賽 Software Development DAY 2

技術 Day 1 這到底是什麼符號喔齁齁齁齁齁 - Big O Notation

Big O Notation 是一種表示演算法複雜度的方式。同樣解決一個演算法問題,若該算法執行的時間越少,使用的記憶體愈少,就是越好的解法。可以用來評斷該演算...

鐵人賽 自我挑戰組 DAY 1
LeetCode Top 100 Liked 系列 第 1 篇

技術 [Day 01] Two Sum (Easy)、Add Two Numbers (Medium)

1. Two Sum (Easy) Question Given an array of integers nums and an integer target...

鐵人賽 自我挑戰組 DAY 2
競程回顧 系列 第 2 篇

技術 枚舉

Introduction 枚舉是算法的基礎,以最原始的方式,看過所有可能答案。舉個例子,假設現在要將一些數字由小到大排序,最原始的方法就是枚舉所有排列,長度 n...

鐵人賽 自我挑戰組 DAY 1
競程回顧 系列 第 1 篇

技術 前言

前一年,當我還是競程選手的時候,就想挑戰鐵人賽紀錄學到的東西,礙於時間問題而未成。現在,雖然已證明這是條錯誤的路,能力也不復以往,但還是必須達成當時的願望,也算...

鐵人賽 Software Development DAY 1

技術 Day 0 歡迎來到刷題峽谷 - Algorithms & Data Structures

本系列將使用 JavaScript 來撰寫程式,文中也會穿插英文讓讀者盡量熟悉這些單詞,未來在看相關題目時能夠幫助理解。 什麼是演算法與資料結構 演算法指...

鐵人賽 Software Development DAY 30

技術 Day 30:結束後的下一步

回顧 & 總結 今天是最後一天了,來回顧一下這些日子分享及學習的內容,雖然是寫LeetCode的題目為主,但在過程中每天的題目是有選過主題的,一天一天都...

鐵人賽 Software Development DAY 29

技術 Day 29:653. Two Sum IV - Input is a BST

今日題目 題目連結:653. Two Sum IV - Input is a BST 題目主題:Hash Table, Two Pointers, Tree,...

鐵人賽 Software Development DAY 28

技術 Day 28:1. Two Sum

今日題目 題目連結:1. Two Sum 題目主題:Array, Hash Table 簡單說說 Hash Table Hash Table 主要的核心概念是...

鐵人賽 自我挑戰組 DAY 30

技術 Day-30 完賽心得

經過了漫長的30天,終於完賽了,好險暑假有先屯個15篇,要不應該是沒辦法完賽了,由衷地佩服那些真的每日一篇的大大們~~ 一開始參加鐵人賽的動機是覺得大一念完,覺...

鐵人賽 Software Development DAY 27

技術 Day 27:572. Subtree of Another Tree

今日題目 題目連結:572. Subtree of Another Tree 題目主題:Tree, Depth-First Search, String Mat...

鐵人賽 Software Development DAY 30

技術 【Day30】[演算法]-線性搜尋法Linear Search

搜尋(Search) 就是從一群資料中找出符合某些條件的資料,當資料量非常龐大時,如何在短時間內有效率地找到所要的資料,因此,搜尋演算法就變得相當重要。 線性...

鐵人賽 自我挑戰組 DAY 29

技術 Day-29 Depth-First-Search(DFS), 深度優先搜尋

DFS介紹 與昨天BFS不同的地方在於,BFS是給定一個節點s,接著找到s可以到達的所有節點,而DFS是遍歷整張圖,如果我們給定特定的節點s,我們使用BFS可能...

鐵人賽 Modern Web DAY 25
Javascript 從寫對到寫好 系列 第 25 篇

技術 Day 25 - 演算法入門理解

前言 如果昨天是資料結構,那今天必然是來討論演算法啦! 「演算法」是另一個會讓許多非本科系的 developer 嚇到的詞彙,會覺得好像是很高深難懂的技術,應該...

鐵人賽 Software Development DAY 26

技術 Day 26:53. Maximum Subarray (2)

今日題目 題目連結:53. Maximum Subarray 題目主題:Array, Divide and Conquer, Dynamic Programmi...

鐵人賽 自我挑戰組 DAY 28

技術 Day-28 Breadth-First Search(BFS), 廣度優先搜尋

BFS簡介 BFS是用來遍歷一張圖的最簡單演算法,也是很多在圖論演算法的原型,許多演算法都是基於BFS,像是Prim最小生成樹,Dijkstra演算法等等。 給...

鐵人賽 Software Development DAY 25

技術 Day 25:53. Maximum Subarray (1)

今日題目 題目連結:53. Maximum Subarray 題目主題:Array, Divide and Conquer, Dynamic Programmi...

鐵人賽 Software Development DAY 28

技術 【Day28】[演算法]-桶排序法Bucket Sort

桶排序法(Bucket Sort),與前面幾篇的排序法不一樣,前面都是經由兩兩互相比較而成的排序,稱為比較排序法,而桶排序是非比較排序,屬於「分配性」的排序。原...

鐵人賽 自我挑戰組 DAY 27

技術 Day-27 圖論(Graph)基本概念

圖(Graph)的表示 圖(Graph) 圖,是一種記錄節點和節點之間關連的表示法。對於圖,表示是由集合和集合共同構成的集合,集合中的元素為圖中的節點,故又稱點...

鐵人賽 Software Development DAY 24

技術 Day 24:605. Can Place Flowers

今日題目 題目連結:605. Can Place Flowers 題目主題:Array, Greedy 昨天介紹了 Greedy 的基本概念,今天會在練習一題以...

鐵人賽 Software Development DAY 27

技術 【Day27】[演算法]-堆積排序法 Heap Sort

堆積排序法(Heap Sort)原理是利用「堆積」的資料結構為基礎來完成排序。 堆積的介紹可以參考此篇。 操作流程(最大堆積為例): 將陣列轉換最大堆積(...

鐵人賽 自我挑戰組 DAY 26

技術 Day-26 Hash Table-開放定址(Open Addressing)

open addressing概念 前面提到,在Hash table中發生碰撞時,我們會使用chaining的方式處理,也就是在每一個slot中建立一個link...

鐵人賽 Software Development DAY 23

技術 Day 23:1974. Minimum Time to Type Word Using Special Typewriter

今日題目 題目連結:1974. Minimum Time to Type Word Using Special Typewriter 題目主題:String,...

鐵人賽 Software Development DAY 26

技術 【Day26】[演算法]-快速排序法Quick Sort

快速排序法(Quick Sort)又稱分割交換排序法,是目前公認效率極佳的演算法,使用了分治法(Divide and Conquer)的概念。原理是先從原始資料...