[LeetCode]153 有序数组旋转后的最小值
来源:互联网 发布:范冰冰洪金宝关系 知乎 编辑:程序博客网 时间:2024/06/06 08:37
Find Minimum in Rotated Sorted Array(找到有序数组旋转后的最小值)
【难度:Medium】
Suppose a sorted array 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.
假设一有序数组绕某点旋转,找到其中最小的值,数组中无重复值出现。
解题思路
本题可使用常规遍历查找或是二分查找来解决。
当使用二分查找时,要判断的是中间值nums[mid]与末端值nums[high]的大小比较,
- 1)若nums[mid]>nums[high],虽然数组经过旋转之后顺序改变了,但是可以确定最小值出现在[mid+1,high]这部分区间之中;
- 2)否则出现在[low,mid]这部分区间之中。
c++代码如下:
//二分查找class Solution {public: int findMin(vector<int>& nums) { if (nums.empty()) return 0; int low = 0; int high = nums.size()-1; int mid = 0; while (low < high) { mid = (low+high)/2; nums[mid] > nums[high] ? low = mid+1 : high = mid; } return nums[high]; }};
//常规查找class Solution {public: int findMin(vector<int>& nums) { if (nums.empty()) return 0; int min = nums[0]; for(int i = 1; i < nums.size(); i++) { if (nums[i] < min) min = nums[i]; } return min; }};
0 0
- [LeetCode]153 有序数组旋转后的最小值
- [LeetCode]154 有序数组旋转后的最小值 II
- 求出有序数组旋转后的最小值
- 有序数组旋转后数组最小值
- 有序数组的旋转数组的最小值
- 有序数组或者有序数组的旋转数组 查找最小值
- 寻找旋转有序数组的最小值
- [LeetCode]33 旋转后的有序数组中的搜索
- 有序数组前后两部分旋转后,查找最小值
- Array----- 153. Find Minimum in Rotated Sorted Array(查找旋转后的有序数组中最小值)
- [Java语言] [Leetcode] Find Minimum in Rotated Sorted Array 找旋转有序数组的最小值
- 循环有序数组(旋转数组)的最小值
- 【Leetcode】旋转数组最小值
- 求旋转数组后的最小值
- 字符串算法——查找有序数组旋转后的最小值(无重复元素)(Find Minimum in Rotated Sorted Array)
- 查找有序旋转数组中的最小值
- 旋转有序数组中找最小值
- 在有序旋转数组中找到最小值
- HDU 5635:LCP Array
- 一起看代码来玩玩QT之18 database (last QSqlQueryModel 对数据库进行操作(只查不能改)QTableModel 可改,但是QSqlQueryModel也可以添加代理等功)
- Android中MVP设计使用
- 程序员必备算法-最考验逻辑思维能力的十大基础算法
- leetcode:Spiral Matrix 【Java】
- [LeetCode]153 有序数组旋转后的最小值
- angularJS 入门1
- Codeforces--617B--Chocolate(规律)
- C语言中的static 详细分析
- 【历届试题】核桃的数量
- 【设计模式之装饰模式】
- 五、排序算法(选择排序、插入排序、希尔排序)
- Project Euler Problem 91-100
- 使用jstack 发现死锁