搜索旋转排序数组(Leetcode)

Problem: 33. 搜索旋转排序数组

思路

题目要求时间复杂度为O(logN)O(logN),并且本题是一个升序数组经过部分旋转后的数组,所以我们可以使用二分法进行查找;

解题方法

1.解决方法:二分法查找,时间复杂度:O(logN)O(logN),空间复杂度为 O(1)O(1)

Code


class Solution {
public:
    int search(vector<int>& nums, int target) {
       int n=nums.size();
       if(!n) return -1;
       if(n==1) return nums[0]==target?0:-1;//判断特殊情况
       int l=0,r=n-1;
       while(l<=r)
       {
           int mid=(l+r)>>1;
           if(nums[mid]==target) return mid;//每次循环前判断是否符合要求,符合输出位置
           if(nums[mid]>=nums[0])//判断属于哪个部分
           {
               if(target>=nums[0]&&target<nums[mid])//在部分中使用二分法查找
                {
                    r=mid-1;
                }
                else
                {
                    l=mid+1;
                }
           }
           else
           {
                if(target>nums[mid]&&target<=nums[n-1])
                {
                    l=mid+1;
                }
                else{
                    r=mid-1;
                }
           }
       }
        return -1;//失败返回-1;
    }
};


Leetcode刷题整合 文章被收录于专栏

都是作者刷到的一些感觉是好题整理到一起的,辛苦整理不易,麻烦给个赞,有疑问请留言

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-03 18:22
投了几百份简历,专业和方向完全对口,都已读不回。尝试改了一下学校,果然有奇效。
steelhead:这不是很正常嘛,BOSS好的是即便是你学院本可能都会和聊几句,牛客上学院本机会很少了
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
叶扰云倾:进度更新,现在阿里云面完3面了,感觉3面答得还行,基本都答上了,自己熟悉的地方也说的比较细致,但感觉面试官有点心不在焉不知道是不是不想要我了,求阿里收留,我直接秒到岗当阿里孝子,学校那边的房子都退租了,下学期都不回学校,全职猛猛实习半年。这种条件还不诱人吗难道 然后现在约到了字节的一面和淘天的复活赛,外加猿辅导。华为笔试完没动静。 美团那边之前投了个base广州的,把我流程卡麻了,应该是不怎么招人,我直接简历挂了,现在进了一个正常的后端流程,还在筛选,不知道还有没有hc。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务