题目描述:
统计数字在排序数组中出现的次数
class Solution:
def top(self, target, L):
if L is None or L == []:
return None
if target == None:
return None
if target in L:
leng = len(L)
return self.find(0, leng-1, target, L)
else:
return None
def find(self, first,last ,target,L):
mid = (first+last)//2
if L[mid] > target:
return self.find(first, mid, target, L)
elif L[mid] < target:
return self.find(mid, last, target,L)
else:
num = 1
i = 1
while L[mid-i] == target or L[mid+i] == target:
if L[mid-i] == target:
num+=1
if L[mid+i] == target:
num+=1
i+=1
return num
m = Solution()
s = m.top(3,[])
print(s)
题目2:0-n-1中缺失的数字
一个长度为n-1的递增排序数组中所有的数字都是唯一的,并且每个数字都在范围0~n-1内,只有一个不在,找到他
class Solution:
def missnum(self, L):
if L is None or L ==[]:
return None
else:
first = 0
end = len(L)-1
mid = (first + end)//2
return self.missing(first,end,L)
def missing(self, first,end,L):
mid = (first + end)//2
if L[mid] == mid:
return self.missing(mid+1, end, L)
elif L[mid] != mid:
if L[mid-1] == mid-1:
return mid
else:
return self.missing(first, mid-1, L)
题目三:数组中数值和下标相等的元素
假设一个单调递增的数组里每个元素都是整数并且唯一,清编写一个函数,找出数组中任意一个数值等于其下标的元素。
class Solution:
def missnum(self, L):
if L is None or L ==[]:
return None
else:
first = 0
end = len(L)-1
return self.missing(first,end,L)
def missing(self, first,end,L):
mid = (first + end)//2
if mid == first:
if L[mid] == mid:
return L[mid]
else:
return None
else:
if L[mid] == mid:
return L[mid]
elif L[mid] > mid:
return self.missing(first, mid-1, L)
else:
return self.missing(mid+1,end,L)