代码随想录刷题营Day6(242:有效字母异位词,349:两个数组的交集,202快乐数)

#代码随想录刷题营Day6(242:有效字母异位词,349:两个数组的交集,202快乐数,1:两数之和)
##242:有效字母异位词:
这个题之前刷过,印象深刻,尤其是应用数组还进行Hash存储的方法,利用a-zASCII码是连续的,只需要定义一个Hash[26]的数组即可,将a对应到hash[0]的位置,z则对应到hash[25]的位置。
不过再刷这个题的时候,竟然忘记初始化hash全零的hash数组怎么写了,我实在是太菜了,就一天没刷题,就忘了。以后可不能这样了,也太危险了。hash=[0]*26即可
##349:两个数组的交集
好喜欢set()这个去重神器啊!太好使了!这样把数组nums放到set()直接就返回了一个没有重复数字的nums。真的可以!不过通过这个题使用set(),也复习了一下set()的用法,比如定义一个set:
s=set()
添加元素:
s.add(6)
删除元素:
s.remove(1),注意remove一个没有的会报错
这时候可以用s.discard()
也可以使用s.pop()
#202:快乐数:
被快乐数搞得一点都不快乐(觉得是个中档题,结果是个简单题,而且自己还A不出来…好难过啊)第一次刷的时候,只记得,当时通过巧用set,使得这个题的题解真的很nice。没有想到set还可以这么使用,但是自己第二次刷,完全忘记set在当时是怎么用的,以至于给我留下了惊艳的感觉。但是我只记得那种看完题解之后的感叹惊艳的感觉了,全然忘记,为啥惊艳。相比第一次做这个题,第二次做,进步的一点就是,会写快乐数了,但是不知道怎么让他“循环”起来。比如,计算了加和sum之后,把他赋予n,也就是得到了一个新的n,怎么让他循环。
原来使用while(True)的写法啊,写到这里,如果使用while(True)的话,肯定需要定义出口,什么是出口呢,当然是n==1的时候是出口了,但是但是,,,如果不是快乐数呢,n永远不会等于1怎么让它出来呢,那就需要使用set()了!将set记录,如果出现循环了,那就说明出不来了,直接返回结果False,这样的设计可以太聪明了,感叹感叹!!!

#1:两数之和:
这个题,用hash法做的好别扭,还是习惯用双指针的方法,当然了,如果单只是为了练习hash中的map的用法,确实可以用。在视频讲解中,卡尔一直强调,map是用来干嘛的,是为了存放遍历过的元素的,从而为后序遍历到新的数值时,提供快速查找到所需要的target-当前元素,所需要的值。

总结:通过今天又重温了哈希表的题目,数组,set()和map()python里面是dict(),的却可以实现hash,快速查找所需要的元素的目的,使用数组的画还是需要考虑取值大小,不然就会造成空间的浪费。set()的话,去重神器,如果有去重的需求,还是优先考虑set(),dict()用法,就是当需要保存两个值,比如值和索引的时候,就需要用到它了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值