0
点赞
收藏
分享

微信扫一扫

Leetcode刷题Day14

Resin_Wu 2022-04-13 阅读 77

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]]

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

举报

相关推荐

0 条评论