457. 经典二分查找问题
作者:互联网
457. 经典二分查找问题
在一个排序数组中找一个数,返回该数出现的任意位置,如果不存在,返回 -1。
样例
样例 1:
输入:nums = [1,2,2,4,5,5], target = 2
输出:1 或者 2
样例 2:
输入:nums = [1,2,2,4,5,5], target = 6
输出:-1
挑战
O(logn) 的时间
public class Solution {
/**
* @param nums: An integer array sorted in ascending order
* @param target: An integer
* @return: An integer
*/
public int findPosition(int[] nums, int target) {
// write your code here
if (nums==null||nums.length==0)return -1;
int low=0;
int high=nums.length-1;
while (low<=high){
final int mid=(high+low)>>>1;
final int midVal = nums[mid];
if (midVal>target){
high=mid-1;
}else if (midVal<target){
low=mid+1;
}else {
return mid;
}
}
return -1;
}
}
标签:二分,return,target,nums,int,mid,457,查找,low 来源: https://blog.csdn.net/xwdrhgr/article/details/116779275