LeetCode-Java题解 704. Binary Search

题目地址:704. Binary Search
解题思路:一道平平无奇的简单题,需要注意定是,跳出循环的边界条件是什么,不要错写成low==high
看了一下大佬们的题解,发现虽然是一道“平平无奇”简单题,但是还是有一些讲究的。
比如我上面直接将low==high定义为错误条件,是不严谨的。
实际这道题它可以分为两种解法:

  1. 跳出循环条件为左闭右闭
  2. 跳出循环条件为左闭右开

 

  1. 左闭右闭
class Solution {
    public int search(int[] nums, int target) {
        int low=0; 
        int high=nums.length-1;
        while(low<=high){
            int mid = (high+low)/2;
            if(nums[mid]==target){
                return mid;
            }
            else if(nums[mid]>target){
                high=mid-1;
            }
            else{
                low=mid+1;
            }
        }
        return -1;
    }
}

 
2. 左闭右开

public int search(int[] nums, int target) {
        int low=0;
        int high=nums.length;
        while(low<high)
        {
            int mid = (low + high)/2;
            if(nums[mid]==target)
            {
                return mid;
            }else if(nums[mid]>target)
            {
                high=mid;
            }else if(nums[mid]<target)
            {
                low=mid+1;
            }
        }
        return -1;
    }
posted @ 2021-12-24 23:57  古宇  阅读(21)  评论(0编辑  收藏  举报

欢迎来刀