zoukankan      html  css  js  c++  java
  • LeetCodeJava题解 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;
        }
    
  • 相关阅读:
    Linux find 用法示例
    [转载]进程的概念与结构
    linux vi命令详解
    vi快捷键必知必会
    vim分屏操作
    硬连接和软连接的区别
    javascript_console调试常用方法
    javascript_错误处理机制
    Array详解
    react--setState使用
  • 原文地址:https://www.cnblogs.com/hooyeefam/p/15721628.html
Copyright © 2011-2022 走看看