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;
        }
    
  • 相关阅读:
    JAVA中的注解小结
    终结任务
    共享资源访问
    基本线程机制
    HashSet、LinkedHashSet、TreeSet
    EnumMap
    LinkedHashMap及其源码分析
    集合迭代器快速失败行为及CopyOnWriteArrayList
    LinkedList
    比特币中的Base58 编码
  • 原文地址:https://www.cnblogs.com/hooyeefam/p/15721628.html
Copyright © 2011-2022 走看看