Find Minimum in Rotated Sorted Array
来源:互联网 发布:知往事之不可追 编辑:程序博客网 时间:2024/05/27 19:25
题目:153
Find Minimum 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 might become 4 5 6 7 0 1 2).
Find the minimum element.
You may assume no duplicate exists in the array.
题目分析:
从数据结构来分析,有序且是数组(顺序存储),查找最小的元素,首先最容易想到的就是折半查找(二分查找),如果没有旋转,则arr[mid]> arr[low],按从小到大排序,经过旋转后,如果arr[mid]> arr[low],最小值在右半区,如果arr[mid]< arr[low],最小值在左半边。有一些特殊的情况需要考虑,如当数组只有一个元素,数组就是按从小到大排序排好。返回在数组中的最小的元素。
这道题也是《剑指offer》面试题8。
(1) 朴素解法:
class Solution {public: int findMin(vector<int> &num) { if (num.size() == 1) return num[0]; int low, mid, high; low = 0; high = num.size() - 1; while (low < high) { mid = (low + high) / 2; if (num[low] < num[high]) return num[low]; if (num[mid] > num[low]) low = mid; else if (num[mid] < num[low]) high = mid; else return num[high]; } }};
(2) C code
20150527 (1)中解法已经很不错,再给出两种解法。
一个是:时间复杂度O(N)的,从后往前遍历数组中的元素,找到第一个该元素比其前一个元素小的就是旋转数组中的最小值,因为数组中的最小值是两个有序数组的分界值。
二个是:实现上有一些区别。
int findMin(int* nums, int numsSize) { int start, end, mid;start = 0;end = numsSize - 1;if (nums[start] <= nums[end])return nums[start];while (nums[start] > nums[end]) { if (end - start == 1) { start = end; break; }mid = (start + end) / 2;if (nums[mid] > nums[start])start = mid + 1;else end = mid;}return nums[start];}看了下剑指offer,对于[ 2, 1] 这样的输入这么处理的。
0 0
- Find Minimum in Rotated Sorted Array
- [LeetCode] Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Leetcode: Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- leetcode :Find Minimum in Rotated Sorted Array
- LeetCode:Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array II
- 【Leetcode】Find Minimum in Rotated Sorted Array
- Find Minimum in Rotated Sorted Array
- LeetCode:Find Minimum in Rotated Sorted Array
- LeetCode: Find Minimum in Rotated Sorted Array
- leetcode: Find Minimum in Rotated Sorted Array
- [LeetCode] Find Minimum in Rotated Sorted Array
- 自定义View之onMeasure()
- Java NIO:NIO概述
- ubuntu14.04.1 安装配置jdk1.8
- Exception
- 【Hibernate学习之路6】HQL
- Find Minimum in Rotated Sorted Array
- hibernate异常
- forward和redirect的区别
- 倒排文件(一)
- 2015年创业中遇到的技术问题:141-150
- ACM-荷兰国旗问题
- Playmaker全面实践教程之Playmaker常用工具
- 使用ANT打包Android应用
- windows中apache2配置性能优化以及测试小结