class Solution:
# @param nums: The integer array
# @param target: Target number to find
# @return the first position of target in nums, position start from 0
def binarySearch(self, nums, target):
# O(n):
i = 0
while nums[i] < target and i < len(nums):
if nums[i] == target:
return i
i += 1
if nums[i] == target:
return i
return -1
直接返回mid的:
class Solution:
# @param nums: The integer array
# @param target: Target number to find
# @return the first position of target in nums, position start from 0
def binarySearch(self, nums, target):
# O(log): 該算法不能AC
start, end = 0, len(nums) - 1
while start <= end:
mid = (start + end) / 2
if nums[mid] == target:
return mid
elif nums[mid] > target:
end = mid - 1
else:
start = mid + 1
return -1
返回right:
class Solution:
# @param nums: The integer array
# @param target: Target number to find
# @return the first position of target in nums, position start from 0
def binarySearch(self, nums, target):
left, right = 0, len(nums) - 1
while left < right:
mid = (right - left) / 2 + left
if target > nums[mid]:
left = mid + 1
elif target < nums[mid]:
right = mid - 1
else:
right = mid
if nums[right] == target:
return right
return -1