代码随想录算法训练营第六天(第五天周日休息)| 242.有效的字母异位词、349. 两个数组的交集、202. 快乐数、1. 两数之和

242.有效的字母异位词

利用一个哈希表, s字符串中的字母出现一次哈希表对应位置+1, t字符串中的字母出现一次哈希表对应位置-1,如果最后哈希表全为0返回True

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        lst = [0] * 26
        for i in s:
            lst[ord(i) - ord('a')] += 1    #ord()返回ASCII码
        for i in t:
            lst[ord(i) - ord('a')] -= 1
        for i in lst:
            if i != 0:
                return False
        return True

349. 两个数组的交集

先存储一个数组中的所有元素进一个哈希表, 另一个数组中的元素再与该哈希表进行比较

字典中的get()方法: dict(key, value)

key: (必选) 指定选择的键

value: (可选)如果键不存在,则返回value的值

class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:

        # 使用哈希表存储一个数组中的所有元素
        table = {}
        for num in nums1:
            table[num] = table.get(num, 0) + 1
        
        # 使用集合存储结果
        res = set()
        for num in nums2:
            if num in table:
                res.add(num)
                del table[num]
        
        return list(res)

202. 快乐数

判断重复过程中的平方和是否出现过即可

class Solution:
    def isHappy(self, n: int) -> bool:
        record = []
        while n != 1:
            n = sum(int(i) ** 2 for i in str(n))
            if n in record:
                return False
            record.append(n)
        return True

1. 两数之和

与上面349题的思路类似

enumerate函数:

for i, value in enumerate(sequence, start=0):  
    print(i, value)

sequence是要遍历的数据对象(列表, 元组, 字符串......)

start是可选参数,表示索引开始的数字, 默认是0

i是当前元素的索引, value是当前元素的值

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        record = dict()
        for index, value in enumerate(nums):
            if target - value in record:
                return [index, record[target - value]]
            record[value] = index
        return []

参考文档: 代码随想录

  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值