重学算法之散列表

71 阅读1分钟

散列表:

定义

以键值对存储数据的一种数据结构。

原理

基于数组的下标访问随机数据的特性。

构成:

  1. 键,2. 哈希函数 3. 对应数组元素

但是 key值不同,可能造成一样的结果,造成了散列冲突。

那怎么来解决这个散列冲突呢

  1. 线性探测法
  2. 开放寻址法
  3. 链表法
  4. 以上的优缺点待补充

主体构成由散列函数设计,和散列函数冲突。

小练习

242.    有效的字母异位词   
        给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
/**

-   @param {string} s
-   @param {string} t
-   @return {boolean}  
    */  
  /**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function (s, t) {
  if (s.length !== t.length) {
    return false
  }
  let map1 = Object.create(null);
  let flag = true
  for (let i = 0; i < s.length; i++) {
    if (!map1[s[i]]) {
      map1[s[i]] = 1
    } else {
      map1[s[i]]++
    }
  }

  for (let i = 0; i < t.length; i++) {
    if (!map1[t[i]]) {
      return false
    } else {
      map1[t[i]]--
    }
  }
  for (let key in map1) {
    if (map1[key] !== 0) {
      return false
    }
  }
  return true
};