手写代码:二分查找的代码
private ArrayList<Integer> binarySearch(int []nums, int left, int right, int value) {
if(left > right) {
return new ArrayList<Integet>();
}
int mid = (left+right)/2;
int midValue = nums[mid];
if(value > midValue) {
return binarySearch(nums, mid+1, right, value);
} else (value < minValue) {
return binarySearch(nums, left, mind-1, value);
} else {
ArrayList<Integet> retList = new ArrayList<Integer>();
int temp = mid - 1;
while(true) {
if(temp<0 || value != nums[temp]) {
break;
}
retList.add(temp);
temp--;
}
retList.add(mid);
temp = mid + 1;
while(true) {
if (temp>nums.length-1 || value != nums[temp]) {
break;
}
retList.add(temp);
temp++;
}
return retList;
}
}