day6 哈希

当我们遇到了要快速判断一个元素是否出现集合里的时候,就要考虑哈希法

哈希表是根据关键码的值而直接进行访问的数据结构。

本质就是对数据进行赋index, 进而实现快速查找

list2 = []   # 建立一个空list

list2[:0] = "gjgf"   # 用这个list对 "gigf" 这个string进行切片,并存回list2

print(list2)  # 打印出来list2

349两个数组交集:set 和 list互相转化,使用set 求交集

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        set1 = set(nums1)
        set2 = set(nums2)
        set3 = set1 & set2
        return list(set3)

这道题目,主要要学会使用一种哈希数据结构:unordered_set,这个数据结构可以解决很多类似的问题。 

1,  两数之和

for 循环使用 enumerate

>>> seq = ['one', 'two', 'three']
>>> for i, element in enumerate(seq):
...     print i, element
...
0 one
1 two
2 three

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        records = dict()

        for index, value in enumerate(nums):  
            if target - value in records:   # 遍历当前元素,并在map中寻找是否有匹配的key
                return [records[target- value], index]
            records[value] = index    # 这一句是核心代码,把value当成key,来存储index
        return []

这里的dict 是拿value当key, 来存储index 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值