4.7
二分查找问题并不难,
但是要记得对边界值的处理,
不然可能时间复杂度过不了。
public class Solution {
/**
* @param nums: An integer array sorted in ascending order
* @param target: An integer
* @return an integer
*/
public static int findPosition(int[] nums, int target) {
int size = nums.length;
if(size < 0){
return -1;
}
int low = 0;
int height = size - 1;
while(low <= height){
if(nums[low] > target){
return -1;
}
if(nums[height] < target){
return -1;
}
if(nums[low] == target){
return low;
}
if(nums[height] == target){
return height;
}
int flag = (low + height) /2;
if(nums[flag] == target){
return flag;
}
if(nums[flag] > target){
height = flag -1;
}
else{
low = flag + 1;
}
}
return -1 ;// Write your code here
}
}