4.19
上次刷题仿佛是上辈子的事情了,最近忙ddl的各种,加上依然没有从emo里缓回来,现在虽然好像依然没有缓回来,但是还是在grief process里心情起起伏伏
今天看到很多年前学过的一句话,内心大受震动:“尽吾志也而不能至者,可以无悔矣”
4.20
昨天又是摆烂的一天
跟爸妈哭诉我感觉我这辈子可能要很晚很晚才能找到男朋友了,我可不可以35以后再结婚,如果结不了可不可以一辈子不结婚,被告知经济独立的话,可以,突然奇奇怪怪的年龄的焦虑又消失了!
4.21
做作业的一天,就原谅自己啦
跟妈妈讨论我是不是对自己不够狠,她说是
4.22
不准再难过了,某人一开始就没有想好好在一起,安慰不安慰,其实对于结果意义都不大
我想要好多好多爱,如果没有,那么好多好多钱也是好的。好想发财啊
4.23
废了好多天了,该学了
我妈说:“一定要低下头,你现在是什么都不懂的小朋友”,哈哈哈哈哈哈
今天体会了一下go和python的速度差,感受到参差了
4.24
别摆了!!!
最近哭的次数日渐减少,本来就是在没有想有对象的时间谈恋爱,本来就是错的,拨乱反正的开始,本来就会痛呀
相信自己能做到非常重要!!!我一定能做到的!!
换了一本新书来跟着练leetcode,逻辑跟我高中做物理差不多,分类型分模块
数组的二分查找,掌握全闭区间[left, right]的方式吧,关于这个方法的要点:
1. while的时候需要用到<=符号
2. if target > nums[middle]的时候,middle要+1,因为他已经>middle了,说明本来就不会取这个值了(多余的取,浪费时间
704. 二分查找
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums) - 1
while left <= right:
if target > (nums[left] + nums[right]) / 2:
left = (left + right) // 2
elif target < (nums[left] + nums[right]) / 2:
right = (left + right) // 2
elif target == (nums[left] + nums[right]) / 2:
return (left + right) // 2
return -1
麻木了,又双叒超时了
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums) - 1
while left <= right:
middle = (left + right) // 2
if target > nums[middle]:
left = middle
elif target < nums[middle]:
right = middle
elif target == nums[middle]:
return middle
return -1
跟上面同质,所以也超时了,又去看了一下二分查找的内容,发现在闭区间下,若target > nums[middle],其实说明nums[middle]这个位置可以不考虑了,所以左边区间需要选middle + 1 :
class Solution:
def search(self, nums: List[int], target: int) -> int:
left = 0
right = len(nums) - 1
while left <= right:
middle = (left + right) // 2
if target > nums[middle]:
left = middle + 1
elif target < nums[middle]:
right = middle - 1
elif target == nums[middle]:
return middle
return -1
但是同样的+1,-1操作用在上面第一段做法就不太对,这个需要再问问看
4.25
依然是,好喜欢被鼓励的一天呀~被鼓励了就会好开心的
跟那个人,毫无深层次交流,不在一起也罢,可能他也会觉得我是个没内涵的人吧,可是我好像一直习惯对方先说,然后我来加入话题进行深层次讨论,并不习惯被直接问问题...下一次,勇敢的说出来,然后回去再讨论也是可以的
4.26
又摆了一天,今天种草了麦当劳的麻辣拌,果然我在实力允许的情况下执行力非常高(吃到了,难吃
34. 在排序数组中查找元素的第一个和最后一个位置
题目上问时间复杂度logn,那就是妥妥的二分查找了
class Solution:
def searchRange(self, nums: List[int], target: int) -> List[int]:
left = 0
right = len(nums) - 1
while left <= right:
middle = (left + right) // 2
if target < nums[middle]:
right = middle - 1
elif target > nums[middle]:
left = middle + 1
else:
first = middle
last = middle
if target == nums[first - 1]:
first -= 1
if target == nums[last + 1]:
last += 1
if first != last:
return[first, last]
if first == last:
return[first]
return[-1, -1]
嵌套了无数个if,写的时候感觉不太对,但是又说不好问题出在哪里,运行果然报错了
4.27
是废物没错了,哭了一天