LeetCode #33 Search in Rotated Sorted Array Kotlin

Caroline
Jan 5, 2021

binary search to find out pivot

then do binary search again

fun search(nums: IntArray, target: Int): Int {

if (nums.isEmpty()) {
return -1
}
var left = 0
var right = nums.size - 1
while (left < right) {
val mid = left + (right - left) / 2
if (nums[mid] > nums[right]) {
left = mid+1
} else {
right = mid
}
}

val pivot = left
left = 0
right = nums.size - 1
if (target >= nums[pivot] && target <= nums[right]) {
left = pivot
} else {
right = pivot
}
while (left <= right) {
val mid = left + (right - left) / 2
if (nums[mid] == target) {
return mid
}
if (target < nums[mid]) {
right = mid - 1
} else {
left = mid + 1
}
} return -1
}

--

--