WaterlessStraw

Untitled

Jun 29th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.59 KB | None | 0 0
  1. def search(nums, target):
  2.  
  3. if len(nums) == 0:
  4. return -1
  5.  
  6. lo = 0
  7. hi = len(nums) - 1
  8.  
  9. while lo < hi:
  10. mid = (lo + hi) / 2
  11. if nums[mid] > nums[hi]:
  12. lo = mid + 1
  13. else:
  14. hi = mid - 1
  15.  
  16. pivot = lo
  17. lo = 0
  18. hi = len(nums) - 1
  19.  
  20. while lo <= hi:
  21. mid = (lo + hi) / 2
  22. realmid = (mid + pivot)%len(nums)
  23. if nums[realmid] == target:
  24. return realmid
  25. if nums[realmid] < target:
  26. lo = mid + 1
  27. else:
  28. hi = mid - 1
  29. return -1
  30.  
  31.  
  32. # nums = [8, 9, 2, 3, 4, 5, 6]
  33. # nums = [4, 5, 6, 7, 8, 9, 1]
  34. nums = [4, 5, 6, 7, 0, 1, 2]
  35. target = 5
  36.  
  37. print search(nums, target)
Advertisement
Add Comment
Please, Sign In to add comment