zoukankan      html  css  js  c++  java
  • Lintcode 二分查找

    给定一个排序的整数数组(升序)和一个要查找的整数target,用O(logn)的时间查找到target第一次出现的下标(从0开始),如果target不存在于数组中,返回-1

    样例

    在数组 [1, 2, 3, 3, 4, 5, 10] 中二分查找3,返回2

    分析:下标最小的位置。。所以要找一个a...做中间量。

    class Solution {
    public:
        /**
         * @param nums: The integer array.
         * @param target: Target number to find.
         * @return: The first position of target. Position starts from 0. 
         */
        int binarySearch(vector<int> &array, int target) {
            // write your code here
            if(array.size()!=0)
            {
                int a=-1;
                int low=0;
                int high=array.size()-1;
                while(array[low]<=array[high])
                {
                    int mid=(high+low)/2;
                    if(target==array[mid])
                    {
                        a=mid;
                        high=mid-1;
                        
                    }
                    else if(target>array[mid])
                       low=mid+1;
                    else high=mid-1;
                }
                  if(a!=-1)
                 { return a;}
                  return -1;
                 
            }
            
           
        }
    };
    

      

  • 相关阅读:
    无限级分类表设计
    多表连接
    连接(上接子查询那一篇随笔)
    数据库中常用指令
    子查询
    mysql查询表达式解析
    mysql单表删除记录DELETE
    mysql 单表更新记录UPDATE
    七言
    时分秒计算案例
  • 原文地址:https://www.cnblogs.com/lelelelele/p/6111485.html
Copyright © 2011-2022 走看看