集合

Set

  • add
  • has
  • delete

349. 两个数组的交集

给定两个数组,编写一个函数来计算它们的交集。

  1. /**
  2. * @param {number[]} nums1
  3. * @param {number[]} nums2
  4. * @return {number[]}
  5. */
  6. var intersection = function (nums1, nums2) {
  7. return [...new Set(nums1)].filter(item => nums2.includes(item))
  8. };

字典

Map

  • set
  • get
  • delete
  • clear
  • 349
  • 20

    1. 两数之和

    /**
    * @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 n1 = nums[i];
          const n2 = target - n1;
          if (map.has(n2)) {
              return [map.get(n2), i]
          } else {
              map.set(n1, i)
          }
      }
    };
    

    3. 无重复字符的最长子串

    ```javascript 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度。

//滑动窗口

```javascript
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
};

76. 最小覆盖子串