LeetCode 153. Find Minimum in Rotated Sorted Array (在旋转有序数组中找到最小值)
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 (在旋转有序数组中找到最小值)相关推荐
- Leetcode——153. Find Minimum in Rotated Sorted Array
题目原址 https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/ 题目描述 Suppose an ...
- 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 ...
- leetcode 153. Find Minimum in Rotated Sorted Array | 153. 寻找旋转排序数组中的最小值(二分查找)
题目 https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/ 题解 使用二分法,不断地删掉 数组左边的增序列 和 数组右 ...
- python旋转排序数组_LeetCode(力扣)——Search in Rotated Sorted Array 搜索旋转排序数组 python实现...
题目描述: python实现Search in Rotated Sorted Array 搜索旋转排序数组 中文:假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2, ...
- 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++) ...
- 153. Find Minimum in Rotated Sorted Array找其中的最小值
[抄题]: [暴力解法]: 时间分析: 空间分析: [优化后]: 时间分析: 空间分析: [奇葩输出条件]: [奇葩corner case]: [思维问题]: 总算自己写出一道题来了. [英文数据结构 ...
- 154 Find Minimum in Rotated Sorted Array 2
这道题与 153 Find Minimum in Rotated Sorted Array 基本相同,只是有可能有重复的数字, 这样a[left] 就可能与a[mid]相同 因此就多一个可能,因此在最 ...
- 【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 ...
- LeetCode Find Minimum in Rotated Sorted Array II
Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allowed? Woul ...
最新文章
- 常见python面试题总结
- Android:相对布局综合小演练—智能家居,按键快速美化的小技巧
- 四种ASP网页跳转代码
- 用pythonnet为计算机视觉做图像整理
- apache lucene_全文搜索Apache Lucene简介
- c语言sort函数排序二维数组,c++ - 如何使用stl sort函数根据第二列对二维数组进行排序? - 堆栈内存溢出...
- 给楠哥准备的入门单片机
- OllyDBG 入门系列(四)-内存断点
- PythonBasics 中文系列教程 · 翻译完成
- java如何使用promql_Prometheus 常用 PromQL 语句
- js动态加载css文件和js文件的方法
- AI PRO I 第4章
- Resnet_50网络结构图
- mybatis 查询条件包含list
- Windows出现“未连接到互联网代理服务器出现问题,或者地址有误。问题解决办法”
- 全年日历平铺展示以及日期批量选择
- 《西部世界》暗示了大数据人工智能什么
- 怎么从视频中提取音频,这四个方法简单实用!
- 求职面试找工作时,你遇到的奇葩问题?
- 面试时,可以问面试官问题总结
热门文章
- C# 中socket根据Receive判断 TcpClient关闭连接的处理
- mysql explain中key_len值的说明
- 支持分布式数据库同步操作的一个设计点:主键问题
- C语言高级编程:接续符‘\‘的用法
- 【Android 修炼手册】常用技术篇 -- Android 插件化解析
- 同样的电器,为什么官网能比实体店的价格便宜那么多?
- 赫塔•米勒获诺贝尔文学奖说明了什么?
- 作家百态之二:山南海北
- android 清空所有控件,如何清空android ListView控件的内容
- php 实例 规范,PHP开发规范实例详解