4.11
心态逐渐平和了,昨晚做题到2点,突然觉得工作和学习是真的能充实人的,背单词也要搞起来了,八股文也要搞起来了,时间序列也要看起来了
人生不是一次百米冲刺,而是一次长跑,所以别太用力,但要一直努力。春天种的花,秋天一定会结果,所以努力呀!
之前拜托老师讲了一下双指针,被告知python没有指针(,但是可以按照指针的思路来做题。其实之前有用双指针的方法来做题啦,但是好像都没有很掌握这个方法。btw其实好像做leetcode 用不同的方法来做题效果更好,不过我暂时还没有达到量变到质变的进化,所以暂时就不这么折磨自己啦~
依然是我们的老朋友(不是
左右指针,但这道题有一个原因是,它是递增序列
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]]
写了俩,因为二分查找超时了,不太确定最后哪个算对的