内容:

1. HashTable, Hash Function, Collisions

2.Map, Set

3.HashMap, HashSet, TreeMap, TreeSet

1. HashTable, Hash Function, Collisions

把键,用Hash Function 得到一个Value, 然后将这个value 按照HashTable的大小,模上这个值,将value放在这个位置

哈希冲突:Hash Collisions

两个key的value相同,如何放到同一个地方?

在这个位置上面建立一个链表,拉链法是最常见的做法来解决哈希冲突。 理解原理即可,面试不会让你实现

2.Map, Set vs List

list 列表,可以重复

map 映射,成组出现   一般实现方式就是Tree或者哈希表

set 集合,方便查找。类似于Map只有前面的key  一般实现方式就是Tree或者哈希表

哈希表查找O(1)   树查找logN 复杂度

时间复杂度要求高就是Hash   有序的方式,就用Tree

不同的语言调用HashMap

Python的字典就是HashMap.

如果你要用TreeMap的话,可以使用第三方给你加入的数据结构

HashSet也是同理

时间复杂度:

242.

如果一个单词字母数量和内容都一样,那么这两个单词称之为异位词

思路1:

Sort:把单词里的字母进行排序 O(nlogN)

class Solution:def isAnagram(self, s: str, t: str) -> bool:return sorted(s) == sorted(t)

思路2:Map进行计数

把每个单词用一个Map进行计数 O(N)速度略快

class Solution:def isAnagram(self, s: str, t: str) -> bool:dic1,dic2 = {},{}for item in s:dic1[item] = dic1.get(item,0)+1for item in t:dic2[item] = dic2.get(item,0)+1return dic1 == dic2

1. TWO SUM

思路1 : 暴力破解法

思路2: Set

add()

remove()

discard()

pop()

clear()

集合其他方法

函数 说明
len(s) set 的长度
x in s 测试 x 是否是 s 的成员
x not in s 测试 x 是否不是 s 的成员
s.issubset(t) 测试是否 s 中的每一个元素都在 t 中
s.issuperset(t) 测试是否 t 中的每一个元素都在 s 中
s.union(t) 返回一个新的 set 包含 s 和 t 中的每一个元素
s.intersection(t) 返回一个新的 set 包含 s 和 t 中的公共元素
s.difference(t) 返回一个新的 set 包含 s 中有但是 t 中没有的元素
s.symmetric_difference(t) 返回一个新的 set 包含 s 和 t 中不重复的元素
s.copy() 返回 set “s”的一个浅复制
import copy
class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:set1 = copy.deepcopy(nums)for i,x in enumerate(nums):set1.remove(x)if target - x in set1:return [i, nums.index(target - x,i+1,len(nums))]

注意:这里List直接复制, 或者调用List.copy都是浅拷贝,只复制了地址没有创建新的空间

最快解法,HashMap:

import copy
class Solution:def twoSum(self, nums: List[int], target: int) -> List[int]:hashmap={}for i,num in enumerate(nums):if hashmap.get(target - num) is not None:return [i,hashmap.get(target - num)]hashmap[num] = i #这句不能放在if语句之前,解决list中有重复值或target-num=num的情况

思路:遍历nums,初始化HashMap为空。

如果在HashMap里找不到对应的数字,那么把key存为值,  value存为值所对应的索引(方便调用)

15 3sum

自己的代码:太慢没过

import copy
class Solution:def threeSum(self, nums: List[int]) -> List[List[int]]:if len(nums)<3:return []nums.sort()set1 = copy.deepcopy(nums)res = set()for i,x in enumerate(nums):for j,y in enumerate(nums[i+1:]):set1.remove(x)set1.remove(y)if -(x+y) in set1:a = [x,y,-(x+y)]a.sort()b = tuple(a)res.add(b)set1.insert(i,x)set1.insert(j,y)return list(res)

00

0

2021-05-07:set,hashmap,collisions, map 242 1 15 18相关推荐

  1. 2021/05/07 1031 查验身份证 (15 分)

    一个合法的身份证号码由17位地区.日期编号和顺序编号加1位校验码组成.校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8, ...

  2. 直播 | ICLR 2021论文解读:兼听则明,信而有征:可信多模态分类

    「AI Drive」是由 PaperWeekly 和 biendata 共同发起的学术直播间,旨在帮助更多的青年学者宣传其最新科研成果.我们一直认为,单向地输出知识并不是一个最好的方式,而有效地反馈和 ...

  3. 2021周记07:新的一年正式开始

    高中同学聚会 2月16日(初五),和高三的同学们搞了一次聚会,加我一共6个人.自从高中毕业后,每年过年我们几个人都是要聚一次的,只有去年因为疫情的原因没能搞起来. 上午我是第一个到的,便照例在星巴克等 ...

  4. 基础07:列表 ,列一个购物清单

    列表 item1="键盘" item2="键帽" 如果有10个,就不好列了 shopping_list=["键盘","键帽&quo ...

  5. 云计算之路-阿里云上:2013年4月7日14:15~18:35服务器故障经过

    无地自容的道歉之后,向大家汇报一下故障的整个经过.在此再次向大家表示歉意,望大家能谅解! 14:15,有园友在闪存上说博客后台不能发布博文(见下图). 14:17左右,我们看到了这条闪存.立即进入博客 ...

  6. 云计算之路-道歉,无地自容的:4月7日14:15~18:35网站故障给大家带来麻烦了

    终于熬过了那差点让人疯掉的4个多小时,当恢复正常的那一刻,不知该如释重负,还是该痛哭一场. 在一天的访问高峰期,竟然让故障持续了4个多小时,造成无法发布博客.不在缓存中的博文无法访问,实在不可原谅! ...

  7. 漫画:什么是HashMap?

    简介: 众所周知,HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry.这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干.那你知道 ...

  8. 油脂年报:一波三折,柳暗花明(20210104).PDF

    来源:迈科期货 公众号:参一江湖 纵观全年,油脂行情可谓一波三折,2019 年末在印尼干旱.B30 政策的炒作下,市场看涨情绪高昂:但新冠疫情的暴发结束了植物 油年末的上涨行情,在 2020 年上半年 ...

  9. JAVA 面试高频提问知识点之:SET、LIST 和 MAP 的区别

    首先,Set .List 和 Map 是 Java 容器框架的三个最重要的接口,Set.List 和 Map 之间的区别是 Java 容器面试时最经常提问的问题之一.有时这一问题被问作是什么时候使用 ...

最新文章

  1. 丰农控股 CIO 王轶枭:万亿级农资市场,神策数据助力大丰收筑就数据驱动核心竞争力
  2. 如果我们预先得知未来某一刻会因为此刻的决定而失败,那是否还会继续努力?
  3. C++实现最大堆最小堆
  4. jquery UI集合
  5. linux修改文件权限和用户组管理小结
  6. 26元买4500斤脐橙,农民淘宝店被主播带头薅亏700万,“羊毛党”太狠了!
  7. springcloud工作笔记098---springcloud多项目包扫描问题
  8. shell bash常用工具教程(curl,jq)
  9. PostgreSQL-13-缺失值处理
  10. verilog实现格雷码(Gray Code)与二进制编码转换
  11. 基于QT实现的数独游戏DPLL的SAT求解器设计
  12. raspberrypi连接神经计算棒人脸识别
  13. 微信域名防封接口开发
  14. 计算机应用选购哪些电脑,购买电脑有哪些要注意的
  15. HttpStatus499
  16. 【优化算法】简述灰狼优化算法(GWO)原理
  17. 互联网早报:腾讯内测游戏社交 App“NokNok”,对标 Discord
  18. jQuery诞生记-原理与机制
  19. 前端总结·基础篇·CSS
  20. 【图文保存为图片并下载到相册】海报 h5, 微信和 ios 不支持 和 用uniapp 微信小程序 使用canvas把页面转为图片保存到手机

热门文章

  1. 有哪些好用的在线电影影视导航网站
  2. Cocos2d-x for XNA:万丈高楼亦可不需平地起
  3. SpringBoot整合Quartz==适用于单任务多任务
  4. 这些天学C++到学ROS,都感觉视频教程效果好些。效率也高些,相比于单自己看书而言。
  5. Android之如何分析手机系统相册图片和视频删除后保存的位置然后恢复文件,目前已经适配小米、OPPO、VIVO、一加、努比亚、魅族等手机。
  6. php 计算工龄,excel如何计算工龄
  7. 华为机试 放苹果
  8. ubuntu登录桌面后只显示壁纸,排查方案
  9. 1002. 写出这个数 (20)练习
  10. 华为关闭系统更新EMUI9.0禁止更新mate10降级EMUI9