34. Search for a Range
Problem
Analysis
Code
class Solution {
fun searchRange(nums: IntArray, target: Int): IntArray {
val mid = binarySearch(nums, target)
if (mid == -1) {
return intArrayOf(-1, -1)
}
var left = mid
while (left - 1 >= 0) {
if (nums[left - 1] != target) {
break
}
left--
}
var right = mid
while (right + 1 < nums.size) {
if (nums[right + 1] != target) {
break
}
right++
}
return intArrayOf(left, right)
}
private fun binarySearch(nums: IntArray, target: Int): Int {
var left = 0
var right = nums.lastIndex
var mid: Int
while (left <= right) {
mid = (left + right) / 2
when {
nums[mid] == target -> return mid
nums[mid] < target -> left = mid + 1
else -> right = mid - 1
}
}
return -1
}
}Last updated