」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JavaScript 中的 SET(初學者教程)

JavaScript 中的 SET(初學者教程)

發佈於2024-11-04
瀏覽:705

SET in JavaScript (Tutorial for Beginners)

你好呀,

您是否正在尋找一種儲存唯一值、允許插入值、查找值總數和刪除值的資料結構?套裝是最佳選擇。許多程式語言都包含內建的 Set 資料結構,JavaScript 也不例外。讓我們更深入地了解集合的工作原理。

Set是什麼?
Set 是一種資料結構,可讓您儲存任何類型的唯一值,無論是原始值還是物件參考。此集合允許執行 O(1) 時間複雜度的插入、刪除、更新和大小操作。這使得設定更快、更有效率。

集合旨在提供快速存取時間。它們的實作方式通常使查找項目比簡單地逐項檢查更快。典型的實作可以是哈希表(O(1) 查找)或搜尋樹(O(log(N)) 查找)。

要點

  • 快速存取:集合提供對元素的快速存取。
  • 實作:通常使用哈希表或搜尋樹實作。
  • 找出時間:平均查找時間優於 O(N),通常 O(1) 或 O(log(N)).

基本方法

  1. add :它將添加要設定的元素。如果該元素存在於集合中,它將不執行任何操作。
  2. has :如果元素存在於集合中,則傳回 true,否則傳回 false。
  3. size :它將傳回集合的大小。
  4. delete :將從集合中刪除元素。
  5. keys :JavaScript Set 中的 .keys() 方法傳回一個新的迭代器對象,其中包含按插入順序排列的 Set 值。

範例

// 1. Create a new Set and use the .add() method to add elements
const mySet = new Set();
mySet.add(10);
mySet.add(20);
mySet.add(30);

console.log(mySet); // Output: Set { 10, 20, 30 }

// 2. Check if the Set has a specific element using .has() method
console.log(mySet.has(20)); // Output: true
console.log(mySet.has(40)); // Output: false

// 3. Delete an element from the Set using .delete() method
mySet.delete(20);
console.log(mySet); // Output: Set { 10, 30 }

// 4. Iterate over the Set using .keys() method
// In Sets, .keys() and .values() do the same thing
for (const key of mySet.keys()) {
  console.log(key);
}
// Output:
// 10
// 30

// 5. Get the size of the Set using .size property
console.log(mySet.size); // Output: 2


leetcode問題設定範例:

3.沒有重複字元的最長子字串

給定一個字串s,求最長不包含重複字元的子字串的長度。

解決方案

/**
 * @param {string} s
 * @return {number}
 */
var lengthOfLongestSubstring = function(s) {
    let set = new Set();
    let ans = 0;
    let s_index = 0;
    for (let i = 0; i 



解釋:
函數 lengthOfLongestSubstring 使用滑動視窗技術和 Set 來尋找不重複字元的最長子字串:

  • 擴充視窗:如果角色尚不存在,則將其新增至集合。
  • 縮小視窗:當發現重複項時,從視窗開頭刪除字符,調整視窗大小。
  • 更新長度:追蹤具有唯一字元的子字串的最大長度。
  • 此方法透過處理最多每個字元兩次來確保高效的 O(N) 時間複雜度。

就是這樣,如果您有任何疑問或任何建議或任何事情,請隨時添加評論。

來源:
MDN(集)

版本聲明 本文轉載於:https://dev.to/yashrajxdev/set-data-structure-in-javascript-2e4i?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3