牛客题解 | 旋转数组中的最小元素

题目

题目链接

题解

题目难度:简单

知识点:排序、查找

解题思路:这道题看起来就是找最小值,如果从头到尾进行比较是一种思路,缺点时总体的计算次数较多;进一步思考由于数是有一定大小规则进行排序的,所以可以使用二分法进行计算。

方法一(简单粗暴一个一个比较)

这道题就是输出较小数据,直接一个一个比较大小,然后输出符合要求的数据即可。

#include<bits stdc++.h>
using namespace std;
int main()
{
    int temp;
    cin&gt;&gt;temp;
    int num;
    while(cin&gt;&gt;num)
    {
        if(temp&gt;num)
            temp=num;
    }
    cout&lt;<temp<<endl; } ``` ## 方法二 使用二分法进行查找 注意:使用二分法时,要考虑数据可能存在的前后重复性;假设原始数据为“567811111”,这时需要进行特别的二分处理。 #include<bits stdc++.h>
using namespace std;
int main(){
   vector<int>array;
   int n;
   while(cin&gt;&gt;n)
       array.push_back(n);
   int l=0;
   int r=array.size()-1;
   while(l<r) { int mid="(l+r)/2;" if(array[mid]>array[r])
             l=mid+1;           
        else if(array[mid]</r)></int></temp<<endl;></bits>
posted @ 2025-03-07 11:08  wangxiaoxiao  阅读(5)  评论(0)    收藏  举报