0
点赞
收藏
分享

微信扫一扫

Leetcode刷题 33.搜索旋转排序数组

phpworkerman 2022-01-05 阅读 71

在这里插入图片描述

分析:

首先看到这题的第一印象是题目很长,感觉很复杂,但仔细看下来之后发现题目中间一段对解题没有任何的帮助,重点在最后一句,大概意思就是在目标数组中找到目标数据,并传出对应位置,否则传出-1

清楚了目的,由此想到了第一种解法:即直接循环数组,与目标数据匹配。顺利通过测试。

int search(vector<int>& nums, int target) 
    {
        int temp=0,flag=-1;		//flag用来记录是否找到目标数据,temp用来记录位置
        for(auto i:nums)			//循环寻找目标数字
        {
            temp++;					//位置偏移
            if(i==target)
            {
                flag=temp;			//记录位置
            }
        }
        
        if(flag!=-1)
        {
            return flag-1;
        }
        else
        {
            return -1;
        }
    }

解法二:二分查找,察觉到使用此方法的一个重要因素就是题目首句数组按升序排列,但是此题对普通的二分查找做了一些变化,是在题目的中间段落,对数组进行了旋转,那么为了解决这一旋转有两种解法,一种是直接将旋转之后的数组,再次旋转回来;另一种,是在开始对目标值所在数组左右哪个部分进行判断,然后对这部分进行二分查找。

在这里插入代码片
举报

相关推荐

0 条评论