亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

【學習打卡】第九天 數據結構和算法

字典

字典是什么?

和集合类似,字典也是存储唯一值的数据结构,不同的是字典是以键值对的形式来存储;表示一种映射关系。
ES6中使用Map来表示字典。

基本用法

集合的Map的使用:
创建:new
是否存在:has
增:set
删除某个节点:delete
删除全部:clear
改:set
查:get

const map = new Map()   // Map(0) {size: 0}
map.set('a', 1)         // Map(1) {'a' => 1}
map.size                // 1
map.has('a')            // true
map.set('a', 100)       // Map(1) {'a' => 100}
map.get('a')            // 100
map.delete('a')         // true
map.clear()             // undefined

使用场景

两个数组的交集

给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。

上次使用Set的数据结构来实现;这次使用Map来实现

思路:

  1. 遍历数组nums1,以值为键,布尔值为值存储到Map中
  2. 遍历数组nums2,如果在Map中找到,就选出来,同时删除Map中的键,以防止出现重复的元素
var intersection = function(nums1, nums2) {
    const map = new Map();
    
    nums1.forEach(item=> {
        map.set(item, true)
    })

    const res = [];

    nums2.forEach(item => {
        if(map.get(item)){
            res.push(item)
            map.delete(item)
        }
    })

    return res;
};

两数之和

给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。

你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。

你可以按任意顺序返回答案。

var twoSum = function(nums, target) {
    const map = new Map();

    for(let i=0; i<nums.length; i++) {
        let n = nums[i];
        let n2 = target - n;
        if(map.has(n2)){
            return [map.get(n2), i]
        }else{
            map.set(n, i)
        }
    }
};
點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
Web前端工程師
手記
粉絲
3
獲贊與收藏
9

關注作者,訂閱最新文章

閱讀免費教程

  • 推薦
  • 評論
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消