5.9学习笔记(lk)

开始刷领扣,主要是再不刷要废了。真写起来发现循环不会写条件不会写,一抬手就变成了C的形状
两数问题

class Solution:
    # nums=[2,7,11,15]
    # target=int(9)
    def twoSum(self,nums,target):
        for i in range(0,len(nums)):
            for j in range(i+1,len(nums)):
                if nums[i]+nums[j]==target:return [i,j]

对是对,结果双重循环直接就超时了,python你执行效率这么差的吗

class Solution:
    # nums=[2,7,11,15]
    # target=int(9)
    def twoSum(self, nums, target):
        for i in range(len(nums)):
            n = target - nums[i]
            if n in nums[i + 1:]:
                return[i, nums[i+1:].index(n)+i+1]

一个小时以后终于抄答案过了。用的一层循环然后n=target-nums[i],在nums剩下的项里挨个对看有没有一样的,最后返回两个坐标
坑了半小时的地方是这个n的坐标。我以为它从i遍历到表尾会给我返回相对于总表的下标,比如i是1,它从2开始遍历,目标数是4就会给我返回4,结果返回的会是2,因为它拿它开始遍历的2当做0了。所以要返回相对于总表的下标就得是他自己的索引+i+1。坑死了,不过也算学到了。

还是按通过率刷吧=。=
宝石与石头

class Solution:
    def numJewelsInStones(self, J: str, S: str) -> int:
        n=0
        for each in J:
            n +=S.count(each)
        return(n)

好消息是这个题一把过了,坏消息是正高兴呢看了眼评论区看见个这

return sum(S.count(i) for i in J)

啊,我是弱智吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值