【学习打卡】第10天 数据结构之“字典”
标签:
JavaScript
课程名称:JavaScript版数据结构与算法
课程章节:第7章 数据结构之“字典”
主讲老师:lewis
课程内容:
今天学习的内容包括:
7-4 LeetCode:1. 两数之和——计算数组中和为目标值且唯一,返回下标。
7-5 LeetCode:3. 无重复字符的最长子串——找出字符串中不含有重复字符的 最长子串。
7-6 LeetCode:76. 最小覆盖子串——找出A字符串中含有B字符串的最小覆盖子串。
7-7 字典-章节总结——字典的含义,常用语法,ES6中的Map。
7-8 【勤于思考,夯实学习成果】阶段思考题——完成对应作业。
课程收获:
两数之和
1、给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标
2、通过使用字典,查找是否有满足的对应数值,然后返回
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
const map = new Map()
for(let i=0;i<nums.length;i++){
const n = nums[i]
const n2 = target - n
if(map.has(n2)){
return [map.get(n2),i]
}else{
map.set(n,i)
}
}
};
无重复字符的最长子串
1、给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度
2、设置两个指针,一左一右,右指针遇到重复则左指针移动一位,得到最长子串
/**
* @param {string} s
* @return {number}
*/
var lengthOfLongestSubstring = function(s) {
let l = 0
let res = 0
const map = new Map()
for(let r = 0;r<s.length;r++){
if(map.has(s[r]) && map.get(s[r]) >= l){
l = map.get(s[r]) + 1
}
res = Math.max(res,r-l+1);
map.set(s[r],r)
}
return res
};
最小覆盖子串
1、返回 s 中涵盖 t 所有字符的最小子串
2、通过多次循环处理,得到对应的最小子串
阶段思考题
1、实际工作中使用字典
<el-menu-item v-for="(item1, index1) in item[children]" :key="index1" :index="item1.index">
<component v-if="item1[icon]" :is="`el-icon-${toLine(item1[icon])}`"></component>
<span>{{ item1[name] }}</span>
</el-menu-item>
name: {
type: String,
default: 'name'
},
// 菜单标识的键名
index: {
type: String,
default: 'index'
},
2、测试 Map 和 Object 频繁增删操作的性能,谁高谁低
10万数据量下,Obj都要优于Map
obj add: 4.623ms
map add: 10.539ms
obj get: 1.794ms
map get: 5.843ms
obj delete: 7.223ms
map delete: 9.386ms
通过对字典的学习,感觉到了算法的魅力,也感受到了无情的打击,希望自己慢慢成长吧,算法很强大,对自己说一句,加油😀~
坚持打卡,坚持学习!明天见💪~
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦