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;
                 
            }
            
           
        }
    };
    

      

  • 相关阅读:
    Java Number & Math 类
    excel小技巧-转置(表的横向纵向倒过来)
    excel小技巧-提取填充
    excel小技巧-分列
    Java switch case语句
    if...else
    12.15个人总结
    12.9个人总结
    11.29个人总结
    11.25日个人总结
  • 原文地址:https://www.cnblogs.com/lelelelele/p/6111485.html
Copyright © 2011-2022 走看看