力扣349. 两个数组的交集解析-11.2(day05)

        因为今天是第一次写有关哈希表的题,所以尽管这题是简单,我也从中学到了很多东西。

自己第一次看到时候的想法:

        这道题使用哈希表之前我只会用暴力解法——两个for循环,将相同的数放到一个新数组中,然后返回。

使用哈希表后:

        哈希表中的set刚好可以完美适配这道题,无序且不重复。

        关于set中的方法(js):

                1.new Set(),可以直接创建一个空的set表,Set后的括号中带上数组的话就是将数组转换成Set表(并且去除数组中重复的元素)。当不传入数组时,会创建一个空的set表.

                2.set表.add(元素),在set表最后位置添加一个元素。:当添加的元素在set表中已经出现,那么就不会再添加进去。

                3.set表.has(元素),判断set表中是否有该元素,返回布尔值。

                4.Array.from(set表),将set表转为数组。我觉的和1配合起来也是一种去除数组中相同元素的方法。

关于哈希表的拓展——map:

1.map表中的数据是以键值对的形式存在的。

2.ket xx-= new Map(),创建一个空的Map表。注:这个Map后面的括号中在写算法的过程中没有发现可以传进去的参数。

3.Map表.set(key,value),添加元素,不传入value时value默认为undefined。

4.Map表.get(key),得到键为key的元素,返回相应的value值。

5.Map表.has(key),查询Map表中是否存在该kay的value值,返回布尔类型值。注:即使value为undefined,只要key存在,返回的就是true。

6.Map表.delete(key),删除键名为key的键值对。

7.Map表.clear(),清除所有数据。

特别注意:在if判断中使用get或者has的注意点:使用has时,只要有key,即使value为undefined也是true。使用get时,如果value为0,那么if就会判断成false。

你可能感兴趣的:(leetcode,算法,javascript,前端,哈希算法,散列表)