1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| fn lower_bound(nums: &[i32], target: i32) -> usize { let mut left = 0usize; let mut right = nums.len();
while left < right { let mid = left + (right - left) / 2; if nums[mid] < target { left = mid + 1; } else { right = mid; } }
left }
pub fn search_range(nums: Vec<i32>, target: i32) -> Vec<i32> { let left = lower_bound(&nums, target);
if left == nums.len() || nums[left] != target { return vec![-1, -1]; }
let right = lower_bound(&nums, target + 1) - 1; vec![left as i32, right as i32] }
|