码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode 23:Search Insert Position

时间:2015-06-02 12:39:47      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:

该题实际上就是查找,想法一:顺序查找,看看leetcode会不会报超时:

int searchInsert(vector<int>& nums, int target)
{
    int len=nums.size();

    if (len==0)
        return 0;

    int i=0;
    while(i<len)
    {
        if(nums[i]<target)
            i++;

        if(nums[i]==target)
            return i;

        if(nums[i]>target)
            return i;    
    }
}

结果:8ms,AC了。

二分查找应该会比顺序查找快啊,于是二分查找的思想实现:

int searchInsert(vector<int>& nums, int target)
{
    int len=nums.size();

    if (len==0)
        return 0;

    int low=0;
    int high=len-1;

    while(low<=high)
    {
        int mid=(low+high)/2;
        if(nums[mid]>target)
            high=mid-1;
        else if(nums[mid]==target)
            return mid;
        else
            low=mid+1;
    }
    return low;
}

结果很震惊:

技术分享

可以看到,第一次的二分查找竟然12ms,后两次都是8ms,并没有比顺序查找好。

原因可能是系统的测试用例的数组长度都比较短吧,体现不出二分查找的优势。

 

LeetCode 23:Search Insert Position

标签:

原文地址:http://www.cnblogs.com/acode/p/4545743.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!