Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- '''
- nums = [1,2,3,1]
- output : 2
- [1,2,3,1] -> 2
- [1,1,1,1] -> -1
- [1,2,3,4,5,[6],3,4,[8],3,1,2,3,4]
- -> 4, 8 ... 7
- '''
- def findPeakElement(nums) -> int:
- lo, hi = 0, len(nums) - 1
- while (lo <= hi):
- mid = (lo + hi) // 2
- print("mid", mid)
- # 2 1 .....
- if (mid == 0 and nums[mid] > nums[mid + 1]):
- return mid
- # else:
- # return -1
- # ...... 1 2
- if (mid == len(nums)- 1) and nums[mid] > nums[mid-1]:
- return mid
- # else:
- # return -1
- # .... 3 5 1 ..
- if (nums[mid-1] < nums[mid] > nums[mid+1]):
- return mid
- # go towards left
- if (nums[mid-1] > nums[mid]):
- hi = mid - 1
- else:
- lo = mid + 1
- return -1
- nums = [1,2,3,4]
- """
- 4
- lo = 0 -> 1
- hi = 3. 3
- mid -> 1 -> 2
- """
- print(findPeakElement(nums))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement