很抱歉,您的问题似乎不完整。如果您是想询问如何将某个值转换为哈希值,或者有关于哈希的其他问题,请提供更详细的信息,我会尽力帮助您。例如,您可以使用Python中的`hash()`函数来获取一个对象的哈希值,或者使用`hashlib`库来生成字符串的哈希值。
摘要:哈希 (1) twosum 问题返回数组下标 """ 如果假设输入一个数组 nums 和一个目标和 target,请你返回 nums 中能够凑出 target 的
哈希
(1) twosum 问题返回数组下标
"""
如果假设输入一个数组 nums 和一个目标和 target,请你返回 nums 中能够凑出 target 的两个元素的数组下标
输入:nums = [2,7,11,15], target = 9
输出:[0,1]
"""
hashmap = {}
for i, value in enumerate(nums):
complement = target-value
if complement in hashmap:
return [i, hashmap[complement]]
hashmap[value] = i
return []
(2) 字母异位数分组
"""
给你一个字符串数组,请你将字母异位词组合在一起。可以按任意顺序返回结果列表
输入: strs = ["eat", "tea", "tan", "ate", "nat", "bat"]
输出: [["bat"],["nat","tan"],["ate","eat","tea"]]
"""
hashmap = collections.defaultdict(list)
for s in strs:
key = "".join(sorted(list(s)))
hashmap[key].append(s)
res = []
for key, value in hashmap.items():
res.append(value)
return res
(3) 最长连续序列
"""
给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度
输入:nums = [100,4,200,1,3,2]
输出:4
"""
res = 0
num_set = set(nums)
for num in num_set:
if num-1 not in num_set:
tmp = 1
se = num+1
while se in num_set:
se += 1
tmp += 1
res = max(res, tmp)
return res
双指针
(1) 移动零
"""
将所有 0 移动到数组的末尾,必须在不复制数组的情况下对原数组进行操作
输入: nums = [0,1,0,3,12]
输出: [1,3,12,0,0]
"""
left = 0
for right in range(len(nums)):
if nums[right]:
nums[left], nums[right] = nums[right], nums[left]
left += 1
(2) 盛最多水的容器
"""
给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水,返回容器可以储存的最大水量
输入:[1,8,6,2,5,4,8,3,7]
输出:49
"""
res = 0
left, right = 0, len(height)-1
while left < right:
area = (right-left) * min(height[right], height[left])
if left >= right:
right -= 1
else:
left += 1
res = max(res, area)
return res
(3) 三数之和
"""
给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i != j、i != k 且 j != k ,同时还满足 nums[i] + nums[j] + nums[k] == 0 。
