1.思路
- 首先数组应该是
非递减顺序排列的 - 代码总体上是
二分查找法的实现代码,只是在找最小index时,需要特殊处理一下 - 如果找到了某个index,还要判断它是不是
最小的index,即继续往左半部分找
2.代码
import java.util.*;
public class Solution {
public int search (int[] nums, int target) {
int index = -1; //找不到返回-1
int low = 0;
int high = nums.length-1;
while(low<=high){ //low<=high,说明已经找完了整个区间
int mid = (low+high)/2;
if(nums[mid]==target){
index=mid; //记录第一次找到的值
high = mid-1; //找到了第一次,之后的就往更小的区间找
}else if(nums[mid]<target){
low = mid+1;//在右边
}else{
high=mid-1;//在左边
}
}
return index;
}
}