题目:
解题思路:
二分法
代码:
package com.janeroad;
/**
* Created on 2020/7/16.
*
* [@author](https://my.oschina.net/arthor) LJN
*/
public class Test22 {
// returns leftmost (or rightmost) index at which `target` should be
// inserted in sorted array `nums` via binary search.
private int extremeInsertionIndex(int[] nums, int target, boolean left) {
int lo = 0;
int hi = nums.length;
while (lo < hi) {
int mid = (lo + hi) / 2;
if (nums[mid] > target || (left && target == nums[mid])) {
hi = mid;
}
else {
lo = mid+1;
}
}
return lo;
}
public int[] searchRange(int[] nums, int target) {
int[] targetRange = {-1, -1};
int leftIdx = extremeInsertionIndex(nums, target, true);
// assert that `leftIdx` is within the array bounds and that `target`
// is actually in `nums`.
if (leftIdx == nums.length || nums[leftIdx] != target) {
return targetRange;
}
targetRange[0] = leftIdx;
targetRange[1] = extremeInsertionIndex(nums, target, false)-1;
return targetRange;
}
public static void main(String[] args) {
Test22 test22=new Test22();
int[] nums=new int[]{1,3,5,8,8,8,23};
int[] ints = test22.searchRange(nums, 8);
for (int i = 0; i < ints.length; i++) {
System.out.println(ints[i]);
}
}
}
来源:oschina
链接:https://my.oschina.net/u/4248053/blog/4396863