========坚持30天刷leetcode=====
题目链接:https://leetcode-cn.com/problems/search-in-rotated-sorted-array-ii/
这道题继承第33题而来:https://blog.csdn.net/Koyurion/article/details/100104046
我的方法:沿袭33题的解法,不过是返回值进行了修改。要注意的是,返回值是bool,直接返回“false”或“true"字符串,会强制转换为bool类型,变成 True。python中,True(1),False(0),可以适当利用
class Solution:
def search(self, nums: List[int], target: int) -> bool:
nlen=len(nums)
# 1
if nlen==0:
return 0
# 2
i=0
j=nlen-1
if i==j:
if nums[i]==target:
return 1
else:
return 0
# 3
# 3.1
if nums[i]<nums[j]:
# 二分
mid=int((i+j)/2)
#print(nums,mid)
if nums[mid]==target:
return 1
elif nums[mid]>target:
l=self.search(nums[i:mid],target)
#print(nums[i:mid],i,mid-1,l+i)
return 1 if l>0 else 0
else:
r=self.search(nums[mid+1:j+1],target)
#print(nums[mid+1:j],mid+i,j,r+mid+1)
return 1 if r>0 else 0
# 3.2
else:
mid=int((i+j)/2)
#print(mid)
if nums[mid]==target:
return 1
else:
l=self.search(nums[i:mid],target)
l= 1 if l>0 else 0
r=self.search(nums[mid+1:j+1],target)
r= 1 if r>0 else 0
return 1 if (l>0 or r>0) else 0