java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起

PART1:按照数据结构分:

  • 数组
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第1张图片
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第2张图片
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第3张图片

  • 链表
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第4张图片

    • 合并两个有序链表、合并K个升序链表
      java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第5张图片
      java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第6张图片
  • (子)字符串、子数组、(子)序列
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第7张图片
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第8张图片


  • java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第9张图片
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第10张图片

PART2:按照题型分:

  • 手写系列
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第11张图片
  • 括号问题
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第12张图片
  • 队列:
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第13张图片
  • 栈:
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第14张图片
  • 堆:
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第15张图片
  • 散列表(哈希表)&图
    java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第16张图片
    • 哈希表又叫散列表,是一种根据设定的映射函数f(key)将一组关键字映射到一个有限且连续的地址区间上,并以关键字在地址区间中的“像”作为元素在表中的存储位置的一种数据结构。这个映射函数f(key)即为哈希函数也叫散列函数,通过哈希函数得到的存储位置称为哈希地址或散列地址
      • 构造哈希函数的方法:或者说如何减少哈希冲突?一个好的哈希函数可以有效的减少哈希冲突的出现
        • 直接定址法:取关键字或关键字的某个线性函数值为散列地址。即hash(k)=k或hash(k)=ak + b,其中a,b为常数 ;对于不同的关键字不会产生冲突缺点是由于关键字集合很少是连续的,会造成空间的大量浪费
        • 除留余数法:
          • 取关键字被某个不大于散列表表长m的数p除后所得的余数为散列地址。即hash(k)=k mod p, p≤m。不仅可以对关键字直接取模,也可在折叠法、平方取中法等运算之后取模。
          • 对p的选择很重要,一般取小于m的最大素数,若p选择不好,容易产生冲突
        • 数字分析法:假设关键字是以r为基的数,并且哈希表中可能出现的关键字都是事先知道的,则可选取关键字的若干数位组成哈希地址;需要对关键字进行分析。
        • 平方取中法::取关键字平方后的中间几位为哈希地址
        • 折叠法:将关键字分割成位数相同的几部分(最后一部分的位数可以不同),然后取这几部分的叠加和(舍去进位)作为哈希地址。
      • 解决哈希冲突的方法:
        • 开放地址法:我感觉其实就是不停来回转悠,看还有没有其他空位
          java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第17张图片
        • 链地址法:将所有具有相同哈希地址的记录放在同一单链表中,哈希表的第i个元素存放哈希地址为i的记录组成的单链表的头指针。
          java基础巩固-宇宙第一AiYWM:为了维持生计,四大基础之数算总结_Part_7做算法题,为了啥,学思路呗,难不成背题去了嘛 & 散列表等数据结构~总结整起_第18张图片
        • 建立一个公共溢出区:一旦产生冲突,均把当前记录放入公共溢出区的当前表尾。
        • 再哈希法:再哈希法即选取若干个不同的哈希函数,在产生哈希冲突的时候计算另一个哈希函数,直到不再发生冲突为止

未完待续…

你可能感兴趣的:(唠计网,唠OS,唠计组,唠数算,算法,链表,二叉树)