Leetcode刷题Day14

博主分享了学习编程的心态调整,强调工作和学习的充实感。文章通过解决剑指Offer57题,探讨了双指针和二分查找在寻找和为s的两个数字问题中的应用。三种不同的实现方式展示了对这两种算法的理解和实践,同时提到二分查找可能存在的超时问题。
摘要由CSDN通过智能技术生成

4.11

心态逐渐平和了,昨晚做题到2点,突然觉得工作和学习是真的能充实人的,背单词也要搞起来了,八股文也要搞起来了,时间序列也要看起来了

人生不是一次百米冲刺,而是一次长跑,所以别太用力,但要一直努力。春天种的花,秋天一定会结果,所以努力呀!

之前拜托老师讲了一下双指针,被告知python没有指针(,但是可以按照指针的思路来做题。其实之前有用双指针的方法来做题啦,但是好像都没有很掌握这个方法。btw其实好像做leetcode 用不同的方法来做题效果更好,不过我暂时还没有达到量变到质变的进化,所以暂时就不这么折磨自己啦~

依然是我们的老朋友(不是

剑指 Offer 57. 和为s的两个数字

左右指针,但这道题有一个原因是,它是递增序列

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        p, q = 0, len(nums) - 1
        while nums:
            if nums[p] + nums[q] > target:
                q -= 1
            elif nums[p] + nums[q] < target:
                p += 1
            else:
                return [nums[p], nums[q]]

然后是二分查找

class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)):
            x = nums[i]
            ls = nums[i:]
            left, right = 0, len(ls) - 1
            while left < right:
                mid = (left + right) // 2
                if ls[mid] < target - x:
                    left = mid + 1
                elif ls[mid] > target - x:
                    right = mid + 1
                else:
                    return [x, ls[mid]]
            if ls[left] == target - x:
                return [x, ls[left]]
class Solution:
    def twoSum(self, nums: List[int], target: int) -> List[int]:
        for i in range(len(nums)):
            x = nums[i]
            ls = nums[i:]
            left, right = 0, len(ls) - 1
            while left < right:
                mid = (left + right) // 2
                if ls[mid] < target - x:
                    left = mid + 1
                elif ls[mid] > target - x:
                    right = mid + 1
                elif ls[mid] == target - x and mid != i:
                    return [x, ls[mid]]

写了俩,因为二分查找超时了,不太确定最后哪个算对的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值