Is it really necessary to find the max value first then to do binary search to left and right?
what do you guys think about this implementation?
def find_target_given_bitonic_array(bitonic_array, target): left, right = 0, len(bitonic_array) - 1 while left <= right: mid = left + (right - left) // 2 if bitonic_array[mid] == target: return mid if mid + 1 < len(bitonic_array) and bitonic_array[mid + 1] > bitonic_array[mid]: # mid in increasing side if bitonic_array[mid] > target: right = mid - 1 else: left = mid + 1 else: if bitonic_array[mid] > target: left = mid + 1 else: right = mid - 1 return -1
is this optimal? I am asking since I am pretty new on this ds and algorithm thing and would really know if I am on a right track since this is the first solution that came to my mind.