from typing import List
classSolution:deffindMin(self, nums: List[int])->int:
l =0
r =len(nums)-1while l < r:
m =(l + r)//2if nums[m]< nums[r]:
r = m
elif nums[m]> nums[r]:
l = m +1else:
r -=1return nums[l]if __name__ =='__main__':
x = Solution()
s =[2,0,1,1,1]print(x.findMin(s))
2. 两数相加
classListNode:def__init__(self, val=0,next=None):
self.val = val
self.next=nextclassSolution:defaddTwoNumbers(self, l1: ListNode, l2: ListNode)-> ListNode:
x = l1
y = l2
tag =0
pre =Nonewhile x !=Noneand y !=None:
x.val +=(y.val + tag)
tag =0if x.val >=10:
tag =1
x.val -=10
pre = x
x = x.next
y = y.nextif x ==None:
pre.next= y
x = pre.nextwhile x !=None:
x.val += tag
tag =0if x.val >=10:
tag =1
x.val -=10
pre = x
x = x.nextif tag ==1:
pre.next= ListNode(1)return l1
if __name__ =='__main__':
x = Solution()
a = ListNode(8)
b = ListNode(7, a)
c = ListNode(6, b)
d = ListNode(4, c)
a1 = ListNode(8)
b1 = ListNode(7, a1)
c1 = ListNode(6, b1)
d1 = ListNode(4, c1)
ans = x.addTwoNumbers(a, c1)print('')
445. 两数相加 II
classListNode:def__init__(self, val=0,next=None):
self.val = val
self.next=nextclassSolution:defaddTwoNumbers(self, l1: ListNode, l2: ListNode)-> ListNode:
x =[]
i = l1
j = l2
while i !=Noneand j !=None:
i = i.next
j = j.next
m = l1
n = l2
while m !=Noneand i !=None:
x.append(m.val)
m = m.next
i = i.nextwhile n !=Noneand j !=None:
x.append(n.val)
n = n.next
j = j.nextwhile m !=Noneand n !=None:
x.append(m.val + n.val)
m = m.next
n = n.next
ans =None
tag =0whilelen(x)!=0:
v = x.pop()+ tag
tag = v //10
temp = ListNode(v %10)
temp.next= ans
ans = temp
if tag ==1:
temp = ListNode(1)
temp.next= ans
ans = temp
return ans
if __name__ =='__main__':
x = Solution()
a = ListNode(8)
b = ListNode(7, a)
c = ListNode(6, b)
d = ListNode(4, c)
a1 = ListNode(8)
b1 = ListNode(7, a1)
c1 = ListNode(6, b1)
d1 = ListNode(7, c1)
ans = x.addTwoNumbers(d, d1)while ans !=None:print(ans.val)
ans = ans.next