Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand.

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

Find the minimum element.

You may assume no duplicate exists in the array.


题目标签:Array, Binary Search

  题目给了我们一个 旋转有序 数组,让我们找到最小值。如果是在还没有旋转的情况下,那么我们知道,最小值就是第一个数字。

  那么当遇到旋转的情况呢,我们就需要找到那个 “断点” 的两个数字,换句话说,就是最大值和最小值,而且这两个数字一定是相邻的。

  我们来看一下例子:

  0  1  2  4  5  6  7  直接返回第一个数字

  1  2  4  5  6  7  0  返回7 和0 中小的那个数字

  2  4  5  6  7  0  1  

  4  5  6  7  0  1  2

  5  6  7  0  1  2  4

  6  7  0  1  2  4  5

  7  0  1  2  4  5  6

  利用二分法来找到 最大和最小的 两个数字。

  rule 1: 如果 mid 小于 left, 意味着最大的数字在左边,继续去左边找,把right = mid, 这里要包括mid,因为mid 可能是最小的数字;

  rule 2: 如果 mid 大于 right, 意味着最小的数字在右边,继续去右边找,把left = mid, 这里要包括mid, 因为mid 可能是最大的数字。

  当left 和right 相邻的时候,返回小的数字就可以了。

 

Java Solution:

Runtime beats 53.07%

完成日期:08/30/2017

关键词:Array, Binary search

关键点:旋转中,min 和 max 必然是相邻的,利用二分法找到min 和max

 1 class Solution
 2 {
 3     public int findMin(int[] nums)
 4     {
 5         if(nums.length == 1)
 6             return nums[0];
 7
 8         int left = 0;
 9         int right = nums.length - 1;
10
11         if(nums[left] < nums[right])
12             return nums[0];
13
14         while(left + 1 != right)
15         {
16             int mid = left + (right - left) / 2;
17
18             if(nums[mid] < nums[left]) // if left is greater than mid, move to left
19                 right = mid;
20             else if(nums[mid] > nums[right]) // if mid one is greater than right, move to right
21                 left = mid;
22         }
23
24         // if there are only two number
25         return Math.min(nums[left], nums[right]);
26     }
27 }

参考资料:N/A

LeetCode 算法题目列表 - LeetCode Algorithms Questions List

转载于:https://www.cnblogs.com/jimmycheng/p/7456345.html

LeetCode 153. Find Minimum in Rotated Sorted Array (在旋转有序数组中找到最小值)相关推荐

  1. Leetcode——153. Find Minimum in Rotated Sorted Array

    题目原址 https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/ 题目描述 Suppose an ...

  2. leetcode题解:Search in Rotated Sorted Array(旋转排序数组查找)

    题目: Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7  ...

  3. leetcode 153. Find Minimum in Rotated Sorted Array | 153. 寻找旋转排序数组中的最小值(二分查找)

    题目 https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/ 题解 使用二分法,不断地删掉 数组左边的增序列 和 数组右 ...

  4. python旋转排序数组_LeetCode(力扣)——Search in Rotated Sorted Array 搜索旋转排序数组 python实现...

    题目描述: python实现Search in Rotated Sorted Array 搜索旋转排序数组 中文:假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2, ...

  5. 153. Find Minimum in Rotated Sorted Array

    public class Solution {public int findMin(int[] nums) {int len=nums.length;for(int i=0;i<len;i++) ...

  6. 153. Find Minimum in Rotated Sorted Array找其中的最小值

    [抄题]: [暴力解法]: 时间分析: 空间分析: [优化后]: 时间分析: 空间分析: [奇葩输出条件]: [奇葩corner case]: [思维问题]: 总算自己写出一道题来了. [英文数据结构 ...

  7. 154 Find Minimum in Rotated Sorted Array 2

    这道题与 153 Find Minimum in Rotated Sorted Array 基本相同,只是有可能有重复的数字, 这样a[left] 就可能与a[mid]相同 因此就多一个可能,因此在最 ...

  8. 【LeetCode】154. Find Minimum in Rotated Sorted Array II (3 solutions)

    Find Minimum in Rotated Sorted Array II Follow up for "Find Minimum in Rotated Sorted Array&quo ...

  9. LeetCode Find Minimum in Rotated Sorted Array II

    Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allowed? Woul ...

最新文章

  1. 常见python面试题总结
  2. Android:相对布局综合小演练—智能家居,按键快速美化的小技巧
  3. 四种ASP网页跳转代码
  4. 用pythonnet为计算机视觉做图像整理
  5. apache lucene_全文搜索Apache Lucene简介
  6. c语言sort函数排序二维数组,c++ - 如何使用stl sort函数根据第二列对二维数组进行排序? - 堆栈内存溢出...
  7. 给楠哥准备的入门单片机
  8. OllyDBG 入门系列(四)-内存断点
  9. PythonBasics 中文系列教程 · 翻译完成
  10. java如何使用promql_Prometheus 常用 PromQL 语句
  11. js动态加载css文件和js文件的方法
  12. AI PRO I 第4章
  13. Resnet_50网络结构图
  14. mybatis 查询条件包含list
  15. Windows出现“未连接到互联网代理服务器出现问题,或者地址有误。问题解决办法”
  16. 全年日历平铺展示以及日期批量选择
  17. 《西部世界》暗示了大数据人工智能什么
  18. 怎么从视频中提取音频,这四个方法简单实用!
  19. 求职面试找工作时,你遇到的奇葩问题?
  20. 面试时,可以问面试官问题总结

热门文章

  1. C# 中socket根据Receive判断 TcpClient关闭连接的处理
  2. mysql explain中key_len值的说明
  3. 支持分布式数据库同步操作的一个设计点:主键问题
  4. C语言高级编程:接续符‘\‘的用法
  5. 【Android 修炼手册】常用技术篇 -- Android 插件化解析
  6. 同样的电器,为什么官网能比实体店的价格便宜那么多?
  7. 赫塔•米勒获诺贝尔文学奖说明了什么?
  8. 作家百态之二:山南海北
  9. android 清空所有控件,如何清空android ListView控件的内容
  10. php 实例 规范,PHP开发规范实例详解