首页 > 其他分享 >153. 寻找旋转排序数组中的最小值

153. 寻找旋转排序数组中的最小值

时间:2024-05-09 10:11:07浏览次数:16  
标签:153 min nums 旋转 最小值 数组 升序 排序

已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums = [0,1,2,4,5,6,7] 在变化后可能得到:
若旋转 4 次,则可以得到 [4,5,6,7,0,1,2]
若旋转 7 次,则可以得到 [0,1,2,4,5,6,7]
注意,数组 [a[0], a[1], a[2], ..., a[n-1]] 旋转一次 的结果为数组 [a[n-1], a[0], a[1], a[2], ..., a[n-2]] 。

给你一个元素值 互不相同 的数组 nums ,它原来是一个升序排列的数组,并按上述情形进行了多次旋转。请你找出并返回数组中的 最小元素 。

你必须设计一个时间复杂度为 O(log n) 的算法解决此问题。

class Solution {
public:
    int findMin(vector<int>& nums) {
        auto min = min_element(nums.begin(),nums.end());
        if(min!=nums.end())
        {
            return *min;
        }
        return -1;

    }
};

我设计个鸡毛,直接就是造
min_element返回最小值的迭代器

标签:153,min,nums,旋转,最小值,数组,升序,排序
From: https://www.cnblogs.com/donghao99/p/18181503

相关文章

  • [笔记]拓扑排序
    对于一个有向无环图(DAG)的顶点按顺序排成一个序列的过程,就是拓扑排序(TopologicalSort)。具体来说,这个序列必须满足:每个顶点正好出现\(1\)次。如果图上存在一条\(A\toB\)的路径,那么\(A\)一定在\(B\)之前。注意:拓扑排序结果可能不唯一。具体做法就是每次在图中寻找\(1\)个入......
  • 冒泡排序、插入排序、选择排序
    冒泡排序思想:从左到右,元素交换。第一个元素和第二个元素比较,若第一个元素大于第二个,则交换元素,再第二个元素与第三个元素比较,依次比较,直到比较完。则最尾部的元素是最大值。voidmaopao(inta[5],intsi){for(inti=0;i<si-1;i++){for(intj=0;......
  • 34. 在排序数组中查找元素的第一个和最后一个位置
    给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1,-1]。你必须设计并实现时间复杂度为O(logn)的算法解决此问题。示例1:输入:nums=[5,7,7,8,8,10],target=8......
  • Mysql中的双路排序和单路排序
    在Mysql中使用orderby进行排序的时候,是可以使用到索引排序的,但是需要添加一些限制条件,例如:select*fromt_userwherename='张三'orderbyname;使用这种方式就可以使用到索引,同时使用limit也是可以使用到索引的select*fromt_userorderbyname;通过这种方式不会使用到索......
  • 归并排序
    归并排序模板constintN=1e6+10;inta[N],tmp[N];//定义一个缓存数值voidmerge_sort(intq[],intl,intr){if(l>=r)return;intmid=l+r>>1;merge_sort(q,l,mid),merge_sort(q,mid+1,r);intk=0,i=l,j=mid+1;......
  • 快速排序
    快速排序快排模板(以j为分界)快排属于分治算法,分治算法都有三步:1.分成子问题2.递归处理子问题3.子问题合并voidquick_sort(intq[],intl,intr){//递归的终止情况if(l>=r)return;//第一步:分成子问题 inti=l-1,j=r+1,x=q[1+r>>......
  • dataframe的构造,取值,赋值,移动,交集,并集,排序,打印,转List,导出csv
    一、构造  da=pd.read_csv(filepath_or_buffer='data.csv',sep='\t')  print(da)  datas=pd.DataFrame(da)2、直接赋值df=pd.DataFrame([[1.4,np.nan],[7,-4],[np.nan,np.nan],[0.75,-1.3]],index=[1,2,3,4],         columns=[......
  • 选择排序
    //选择排序从序列中找到一个最小值元素,把最小值元素放在整个序列的首部,重复n轮,直到整个序列有序voidSelectSort(intbuf[10],intsize){ intmin=0;//记录最小值元素的下标 inttemp=0;//备份最小值元素的值 //需要比较n轮,每轮找到序列中的最小值元素 for(intn......
  • 二分法、冒泡排序
    【一】二分法二分法查找,也称为折半法,是一种在有序数组中查找特定元素的搜索算法思路:首先,从数组的中间元素开始搜索,如果该元素正好是目标元素,则搜索过程结束,否则执行下一步。如果目标元素大于/小于中间元素,则在数组大于/小于中间元素的那一半区域查找,然后重复步骤的操作。如......
  • 常见的排序算法——归并排序(二)
    本文记述了自底向上归并排序的基本思想和一份参考实现代码,并在说明了算法的性能后用随机数据进行了验证。◆思想使用自底向上的递推思想进行排序。从大小为1的子范围开始两两归并,得到小规模排序的结果。逐步将子范围的大小翻倍并继续两两归并,直到整个数组范围都已被归并,即得......