博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Leetcode:find_minimum_in_rotated_sorted_array
阅读量:4342 次
发布时间:2019-06-07

本文共 954 字,大约阅读时间需要 3 分钟。

一、     题目

给定一个排好序的数组。数组可能是单调递增,也可能有一个变换。

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2)

要求找出最小的数。

二、     分析

这道题正如题目所说的分来两种情况

1、         严格单调递增

2、         有一个拐点

  我们须要分情况处理。当然也能够无论这些直接遍历,即从头到尾扫描,找出最小的数;假设依据题意,我们须要考虑

1、         当严格单调时,因为是排好序的所以我们直接return 第一个元素就可以;或者直接利用二分法查找也能够。

2、         当有拐点时,我们就能够二分查找高速找到最小值。

综上所诉。考虑两种情况能够提高效率,可是直接当做一种情况更优点理。

并且都能通过。

 

class Solution {public:    int findMin(vector
&num) { int min = num[0]; for(int i=1;i
num[i-1]) min = num[i]; } return min; }};class Solution {public: int findMin(vector
&num) { if(num.size()==0) return 0; int sta=0; int flag; int end=num.size()-1; while(sta
&num) { int cou=num.size()-1; //the numbers of num if(num.size()==0) return 0; //the num is null if(num.size()==1) return num[0]; //num have a single number int mid=0; int sta=0; //the start int end=cou; //the end if(num[sta]

转载于:https://www.cnblogs.com/mfrbuaa/p/5153337.html

你可能感兴趣的文章
关于WordCount的作业
查看>>
UIView的layoutSubviews,initWithFrame,initWithCoder方法
查看>>
STM32+IAP方案 实现网络升级应用固件
查看>>
用74HC165读8个按键状态
查看>>
jpg转bmp(使用libjpeg)
查看>>
linear-gradient常用实现效果
查看>>
sql语言的一大类 DML 数据的操纵语言
查看>>
VMware黑屏解决方法
查看>>
JS中各种跳转解析
查看>>
JAVA 基础 / 第八课:面向对象 / JAVA类的方法与实例方法
查看>>
Ecust OJ
查看>>
P3384 【模板】树链剖分
查看>>
Thrift源码分析(二)-- 协议和编解码
查看>>
考勤系统之计算工作小时数
查看>>
4.1 分解条件式
查看>>
Equivalent Strings
查看>>
flume handler
查看>>
收藏其他博客园主写的代码,学习加自用。先表示感谢!!!
查看>>
H5 表单标签
查看>>
C语言编程-9_4 字符统计
查看>>