本系列是代码随想录算法训练营的学习笔记之day6,主要记录一下刷题的过程,以及核心知识点和一些值的记录的问题。
代码随想录的资源都是免费的,具体可以看参考链接【1】。
比如要查询一个同学在不在一个学校,我们只需要初始化把这所学校里学生的名字都存在哈希表里,在查询的时候通过索引直接就可以知道这位同学在不在这所学校里了。 将学生姓名映射到哈希表上就涉及到了hash function ,也就是哈希函数。
哈希函数的具体解释可以看参考【1】和参考【2】,简单理解就是通过哈希函数,可以获取key对应的数组中的下标,通过下标直接去索引。
给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。
注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词。
链接:https://leetcode.cn/problems/valid-anagram
class Solution:
def isAnagram(self, s: str, t: str) -> bool:
records = [0]*26
for i in s:
index = ord(i) - ord('a')
records[index] += 1
for i in t:
index = ord(i) - ord('a')
records[index] -= 1
s = sum([abs(i) for i in records])
return False if s!= 0 else True
给定两个数组 nums1 和 nums2 ,返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。
链接:https://leetcode.cn/problems/intersection-of-two-arrays/
class Solution:
def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
a = set(nums1)
b = set(nums2)
re = a & b
return list(re)
编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位>>置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能 是无限循环但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐>>数。 如果 n 是 快乐数 就返回 true ;不是,则>>返回 false 。
链接:https://leetcode.cn/problems/happy-number
class Solution:
def isHappy(self, n: int) -> bool:
def cal_happy(n):
sum_ = 0
while n:
sum_ += (n%10)**2
n = n//10
return sum_
records = set()
while True:
n = cal_happy(n)
if n==1:
return True
if n in records:
return False
else:
records.add(n)
给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。
链接:https://leetcode.cn/problems/two-sum
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
records = dict()
for index, val in enumerate(nums):
if target-val in records:
return [index, records[target-val]]
else:
records[val]=index
哈希表用的是数组支持按照下标随机访问数据的特性,所以哈希表其实就是数组的一种扩展,由数组演化而来。可以说,如果没有数组,就没有散列表。可以看参考【4】
可以看参考【3】,或者理解下图:
enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。
想象两个同学在操作跑步。。
看参考【1】的数学推导。。。
【1】代码随想录:https://programmercarl.com/
【2】set:https://www.runoob.com/python/python-func-set.html
【3】https://zhuanlan.zhihu.com/p/144296454
【4】https://zhuanlan.zhihu.com/p/107326081
【5】enumerate:https://www.runoob.com/python/python-func-enumerate.html
本文由 mdnice 多平台发布