【Java二分查找】
请实现无重复数字的升序数组的二分查找
给定一个 元素升序的、无重复数字的整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标(下标从 0 开始),否则返回 -1
输入:
[-1,0,3,4,6,10,13,14],13
复制
返回值:
6
复制
说明:
13 出现在nums中并且下标为 6
输入:
[],3
复制
返回值:
-1
复制
说明:
nums为空,返回-1
输入:
[-1,0,3,4,6,10,13,14],2
复制
返回值:
-1
复制
说明:
2 不存在nums中因此返回 -1
import java.util.*;
public class Solution {public int search (int[] nums, int target) {int l = 0;//左节点int r = nums.length - 1;//右节点//从数组首尾开始,直到二者相遇while(l <= r){ //每次检查中点的值int m = (l + r) / 2; if(nums[m] == target)return m;//进入左的区间if(nums[m] > target) r = m - 1;//进入右区间else l = m + 1;}//未找到return -1; }
}