注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号 
x
本帖最后由 SummerLi95 于 2021-6-27 15:11 编辑
June 1st: Zoom interview
Question 1 :
input: give a treethe input array.
Example:
1 -> 2
4 -> 5
8 -> -1
- def binarySearch(nums, target, lo, hi): # [6 7 1 2 3 4 5], 1, 2, 6
- left = lo # 2
- right = hi # 6
-
- while left <= right: # 2, 3
- mid = (left + right) // 2 # 2, val 1
- if nums[mid] == target:
- return mid
- elif nums[mid] > target:
- right = mid -1
- else:
- left = mid + 1
-
- return -1
-
- def findNum(nums, target): # [6 7 1 2 3 4 5] # target = 1
- if not nums:
- return -1
- break_point = -1 # 2
- for i in range(1, len(nums)):
- if nums[i] < nums[i-1]:
- break_point = i
- break
-
- if break_point == -1:
- idx = binarySearch(nums, target)
- return idx
-
- if target >= nums[0] and target <= nums[break_point-1]: # nums[0] = 6, nums[1] = 7, nums[2] = 1, nums[6]=5, target = 1
- return binarySearch(nums, target, 0, break_point-1)
- elif target <= nums[-1] and target >= nums[break_point]:
- return binarySearch(nums, target, break_point, len(nums)-1)
-
复制代码
[/i]
|