4. 寻找两个正序数组的中位数
35. 搜索插入位置
最后输出一个mid,target肯定是挨着这个mid的。在左边或者在右边。
class Solution(object):
def searchInsert(self, nums, target):
"""
:type nums: List[int]
:type target: int
:rtype: int
"""
left=0
right=len(nums)-1
while left<=right:
mid=(left+right)//2
if nums[mid]>target:
right=mid-1
elif nums[mid]<target:
left=mid+1
else:
return mid
#判断特殊情况
mid=min(left,len(nums)-1)
print(mid)
if nums[mid]<target:
return mid+1
elif nums[mid]>target:
return mid
29. 两数相除
每个循环中对tmo_divisor相加
class Solution(object):
def divide(self, dividend, divisor):
"""
:type dividend: int
:type divisor: int
:rtype: int
"""
#dividend 大数,divisor 小数
if (dividend>0 and divisor>0) or (dividend<0 and divisor<0):
fuhao=1
else:
fuhao=-1
dividend=abs(dividend)
divisor=abs(divisor)
res=0
while dividend>=divisor:
tmp_divisor=divisor
count=1
while tmp_divisor<=dividend:
dividend=dividend-tmp_divisor
res=res+count
count=count+count
tmp_divisor=tmp_divisor+tmp_divisor
if fuhao==1:
return min(res,2**31-1)
return max(-res,-2**31-1)
50. Pow(x, n)
https://blog.csdn.net/kuangd_1992/article/details/103606417
class Solution(object):
def myPow(self, x, n):
"""
:type x: float
:type n: int
:rtype: float
"""
if n == 0:
return 1
if n == 1:
return x
if n == -1:
return 1/x
half = self.myPow(x, n // 2)
if n % 2 == 0:
result = half * half
else:
result = half * half * x
return result