日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(六)数据结构之“集合”

發布時間:2023/12/31 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (六)数据结构之“集合” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據結構之“集合”

  • 集合是什么?
  • LeetCode:349.兩個數組的交集
  • 前端與集合:使用ES6的Set
  • 思考題

集合是什么?

一種無序且唯一的數據結構
ES6中有集合,名為Set
集合的常用操作:去重、判斷某元素是否在集合中、求交集

// 去重 const arr = [1, 1, 2, 2]; const arr2 = [...new Set(arr)];// 判斷元素是否在集合中 const set = new Set(arr); const has = set.has(3);// 求交集 const set2 = new Set([2, 3]); const set3 = new Set([...set].filter(item => set2.has(item)));

LeetCode:349.兩個數組的交集

輸入:nums1 = [1,2,2,1],nums2 = [2,2]
輸出:[2]

解題思路
求交集且無序唯一
使用集合
解題步驟
用集合對nums1去重
遍歷nums1,帥選出nums2中包含的值

時間復雜度O(m * n),空間復雜度O(m)
m是去重后nums1的長度,n是nums2的長度
nums1和nums2都是已有的存儲,額外臨時的存儲是num1去重后的長度

前端與集合:使用ES6的Set

Set操作
使用Set對象:new、add、delete、has、size
迭代Set:多種迭代方法、Set與Array互轉、求交集/差集

let mySet = new Set();//newmySet.add(1);//add mySet.add(5); mySet.add(5);//因為唯一性,mySet只會有一個5 mySet.add('some text'); let o = { a: 1, b: 2 }; mySet.add(o); mySet.add({ a: 1, b: 2 });//存儲地址不一樣,會被添加const has = mySet.has(o);//has //size為5 mySet.delete(5);//delete //size為4//多種迭代方法 for(let item of mySet) console.log(item); for(let item of mySet.keys()) console.log(item); for(let item of mySet.values()) console.log(item); for(let [key, value] of mySet.entries()) console.log(key, value);//key和value一樣//Set > Array const myArr = [...mySet]; const myArr = Array.from(mySet);//Array > Set const mySet2 = new Set([1,2,3,4]);//求交集(mySet和mySet2中都有的) const intersection = new Set([...mySet].filter(x => mySet2.has(x))); //求差集(mySet中有,mySet2中沒有的) const difference = new Set([...mySet].filter(x => !mySet2.has(x)));

思考題

1、在你的實際工作中使用集合完成一次去重操作
2、了解數據庫中的 join 操作符嗎?inner join 屬于集合中的哪個操作?

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的(六)数据结构之“集合”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。