zoukankan      html  css  js  c++  java
  • Binary Search

    二分查找

    在闭区间查找[begin,end],注意对找不到的处理

    int binary_find(vector<int>& nums, int target){
        int l=0,r=nums.size()-1;//Notice
        while(l<r){
            int mid=l+(r-l)>>1;
            if(nums[mid]==target)return mid;
            else if(nums[mid]>target)r=mid-1;
            else l=mid+1;
        }
        return nums[l]==target?l:-1;
    }
    

    二分搜索

    1. 在[begin,end)查找,故格外注意边界
    2. 满足条件时右不变,不满足时左加一
    3. 注意变式如求上界(注释部分)
    int upper_bound(vector<int>& nums, int target){
        int l=0,n=nums.size();//Notice
        int r=n;
        while(l<r){
            int mid=l+(r-l)>>1;
            if(nums[mid]>target)r=mid;
            else l=mid+1;
        }
        if(r==n)return -1;
        if(nums[l]!=target)return -1;
        else return l;
        /*
        if(l==0)return -1;
        if(nums[l-1]!=target)return -1;
        else return l-1;    
        */
    }
    int lower_bound(vector<int>& nums, int target){
        int l=0,n=nums.size();//Notice
        int r=n;
        while(l<r){
            int mid=l+(r-l)>>1;
            if(nums[mid]>=target)r=mid;
            else l=mid+1;
        }
        if(r==n)return -1;
        if(nums[l]!=target)return -1;
        else return l;
    }
    
  • 相关阅读:
    jquery----->helloworld
    hibernate------->第一个程序
    spring使用jdbcTemplate和jdbcdaosupport和namedparameter
    spring--------------->AOP
    spring------>Helloworld
    JS全选
    表单重复提交
    session
    cookies
    83. Remove Duplicates from Sorted List
  • 原文地址:https://www.cnblogs.com/chanceYu/p/13400126.html
Copyright © 2011-2022 走看看