凹逗工程師

成為一個更好的人

0%

前言

從前有個小村莊,村民們過著平靜而樸實的生活。然而,他們面臨一個困境:村莊周圍的土地資源有限,每位村民都想要在這些土地上種植作物和建造房屋。因此,土地的分配成了一個問題。

村莊的首領考慮到了這個問題,他決定請來了一位聰明的專家幫助他們找到一個公平的土地分配方案。這位專家告訴首領,他可以使用一種叫做「貪婪演算法」的方法來解決這個問題。

閱讀全文 »

前言

大家好~ 在文章開始之前,我們先讓各位看一下名詞提要。

  • 頂點 Vertex or Node
  • 邊 Edge:兩個頂點間的連線
  • 無向性 Undirected:邊無方向性,表示兩點之間為雙向關係。 / 有向性 Directed:邊有方向性,表示兩點之間為單向關係。
  • 加權 Weighted:邊加上權重,代表兩點之間的關係;點加上權重,代表狀態

以上都是我們在圖形這個章節會時常看到的名詞,那我們正是開始囉 GoGo。

閱讀全文 »

前言

JavaScript 中的字典和雜湊表是非常有用的資料結構,可以用來快速查找鍵值對應的值。在 JavaScript 中,字典通常是用物件來實現,而雜湊表則可以使用 Map 來實現。這些資料結構非常常見,因此學習如何使用它們是很重要的。

順道提一下,集合(Set) [值:值]所關注的是值的本體,而字典(Dictionary)、雜湊表(HashMap) [鍵:值]關注的是兩者的 Mapping 關聯,這樣就可以簡單區分開來了。

在本篇文章中,我們將介紹如何在 JavaScript 中使用字典和雜湊表。我們將會討論它們的特性、如何使用它們來解決問題,以及它們的複雜度和效能。如果你對 JavaScript 的資料結構和算法感到興趣,這篇文章將會對你有所幫助。

閱讀全文 »

前言

最近開始學習資料結構,搭配著 LeetCode 進行練習,發現有很多解題的觀念都可以通用!
這次就來説說這次解到的題目,有錯誤的地方還請多多指教 >_<
以下為題目連結:1171. Remove Zero Sum Consecutive Nodes from Linked List

閱讀全文 »

前言

在做資料處理時,是不是很常遇到要做字串分割的時候呢?
這幾天本人剛好有遇到要擷取字串,就想研究一下,到底有哪些方法能滿足我的需求!

閱讀全文 »

前言

這週要帶各位認識的資料結構是「集合 Set」。在深入探索它之前先讓我們看一下他的數學概念,在裡頭集合是一組不同的物件(的集合)。

比如說,一個由大於或等於零的整數組成的自然數集合:N = {0, 1, 2, 3, 4, 5, …}。集合中的物件列表用{}包圍起來。

另一個概念為「空集」,不包含任何元素的集合。比如說: 20, 23 這兩個數字之間的質數集合,由於這兩數之間沒有質數(除了 1 和本身,沒有其他正因數的大於一的自然數),這個集合就是空集合。用 { } 表示。個人覺得本章節在資料結構中蠻重要的,特別是對於後端在資料庫存取時常用到這一個概念。

閱讀全文 »

前言

這週要帶各位認識的資料結構是「 鏈結串列 Linked-List 」,一開始所學的陣列(串列)是一種非常簡易能讓我們存放資料序列的資料結構,而鏈結串列則是一種動態的,我們進行新增或刪減元素,就會依照需求進行擴充。陣列應該是大家最常用的資料結構,每種語言都支持它,但是卻有一個隱憂:在大多數的語言中,陣列的大小是固定的,從起點或中間插入、移除元素是非常耗成本的。

閱讀全文 »

前言

第三週我們歡迎「 Queue 佇列 」,上週我們學會了 stack ,這兩個東西非常相似,但是原則不同!
佇列在尾端新增元素,在頂部移除,在現實中就像是我們在排隊一樣,排在前面的人會優先被服務到,因此也有一個別稱叫做「 隊列 」。

閱讀全文 »

前言

準備好歡迎我們第二週的主題“堆疊”了嗎!
在電腦科學的江湖上流傳著一句話:

程式設計 = 資料結構 + 演算法

在各大專院校裡,這幾門課都列為必修課之一,但是大多缺乏語言的基礎,反而在這裡頭迷失了,學完就好像睡了一覺,模模糊糊迷迷茫茫…,我就是這樣😂

本篇將使用 JavaScript 來學習堆疊(Stack)的資料結構。

閱讀全文 »

前言

有一天在輸入文字的時候,感覺上好像有點怪怪的…,但是又說不出是什麼,打著打著要選字就發現怎麼只能用鍵盤的上下左右盲選字!
不知道是不是我自己很少重新開機。
趕忙爬文,還以為電腦要壽終正寢了(才用一年多…QAQ

閱讀全文 »