Day 6| 242.有效的字母异位词 、349. 两个数组的交集 、 202. 快乐数 、 1. 两数之和

242.有效的字母异位词

建议: 这道题目,大家可以感受到 数组 用来做哈希表 给我们带来的遍历之处。

题目链接/文章讲解/视频讲解: https://programmercarl.com/0242.有效的字母异位词.html

思考

很简单的一道题,需要记住python获取ascii值的函数时ord()

class Solution:
    def isAnagram(self, s: str, t: str) -> bool:
        s_dict = [0] * 26
        t_dict = [0] * 26
        for c in s:
            s_dict[ord(c)-ord('a')]+=1
        for c in t:
            t_dict[ord(c)-ord('a')]+=1
        for i ,j in zip(s_dict,t_dict):
            if i!=j:
                return False
        return True

349. 两个数组的交集

建议:本题就开始考虑 什么时候用set 什么时候用数组,本题其实是使用set的好题,但是后来力扣改了题目描述和 测试用例,添加了 0 <= nums1[i], nums2[i] <= 1000 条件,所以使用数组也可以了,不过建议大家忽略这个条件。 尝试去使用set。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0349.两个数组的交集.html

思考

很简单的题目,但是要记住set的一些用法。

#增
set.add(elmnt)
#删
set.discard(value)
#差集(返回在set1中,但不在set2的元素)
set1.difference(set2) 
#或者 
set1-set2 
#交集
set1 & set2 
#或者 
set1.intersection(set2)
class Solution:
    def intersection(self, nums1: List[int], nums2: List[int]) -> List[int]:
        return list(set(nums1) & set(nums2))

202. 快乐数

建议:这道题目也是set的应用,其实和上一题差不多,就是 套在快乐数一个壳子

题目链接/文章讲解:https://programmercarl.com/0202.快乐数.html

思考

不快乐的数,会陷入死循环,死循环的表现就是会重复出现已经出现过的数。

def mysum(n):
    res = 0
    while n:
        res+= (n%10)**2
        n = int(n / 10)
    return res
class Solution:
    def isHappy(self, n: int) -> bool:
        res_set = set()
        res_set.add(n)
        while True:
            n = mysum(n)
            if n == 1 :
                return True
            if n in res_set:
                return False
            else:
                res_set.add(n)

1. 两数之和

建议:本题虽然是 力扣第一题,但是还是挺难的,也是 代码随想录中 数组,set之后,使用map解决哈希问题的第一题。

建议大家先看视频讲解,然后尝试自己写代码,在看文章讲解,加深印象。

题目链接/文章讲解/视频讲解:https://programmercarl.com/0001.两数之和.html

思考

两数之和,用哈希来把遍历过的元素存起来,查找时复杂度O(1)。不然需要再用一个for循环,哈希相当于少了一层for循环的计算量。

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        num_dict = {}
        for i in range(len(nums)):
            if (target -nums[i]) in num_dict and i != num_dict[target -nums[i]]:
                return [i,num_dict[target -nums[i]]]
            else:
                num_dict[nums[i]] = i
posted @   forrestr  阅读(5)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示