LeetCode 153. Find Minimum in Rotated Sorted Array

二分查找。

因为在旋转前的数组是排好序了的,

所以当num[begin] > num[mid]时,表示我们要搜寻的最小数字在num[begin, ..., mid]之间;

反之,num[begin] < num[mid]时,表示我们要搜寻的最小数字在num[mid+1, ..., end]之间(没有被打乱的数组,如1,2,3,4,..,n这种情况除外,在下面代码中我们进行了特判)

例:考虑num = {5, 6, 7, 1, 2, 3, 4},

begin = 0, end = 6, mid = 3

num[begin] = 5 > num[mid] = 1. 所以我们要搜寻的最小数字在num[0, 1, 2, 3]之间。

代码:

class Solution
{
public:
    int findMin(vector<int> &num)
    {
        return binary_search(0, num.size()-1, num);
    }
private:
	int binary_search(int begin, int end, vector<int>& num)
	{
		if (num[begin] < num[end] || end - begin <= 1)
		{
			return min(num[begin], num[end]);
		} else if (num[begin] > num[(begin+end)>>1])
		{
			return binary_search(begin, (begin+end)>>1, num);
		} else
		{
			return binary_search(((begin+end)>>1)+1, end, num);
		}
	}
};
时间: 2024-10-24 11:09:06

LeetCode 153. Find Minimum in Rotated Sorted Array的相关文章

Java for LeetCode 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. 解题思路: 本题和Java for LeetCode 033 Search in Rotated S

leetcode 153. Find Minimum in Rotated Sorted Array --------- java

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. 在一个反转了的排好序的数组中,找出最小的数 可以直接寻找. public class Solutio

[LeetCode] 154. Find Minimum in Rotated Sorted Array II 寻找旋转有序数组的最小值 II

Follow up for "Find Minimum in Rotated Sorted Array":What if duplicates are allowed? Would this affect the run-time complexity? How and why? Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might be

&lt;LeetCode OJ&gt; Find Minimum in Rotated Sorted Array【153】

153. Find Minimum in Rotated Sorted Array My Submissions Question Total Accepted: 73048 Total Submissions: 209952 Difficulty: 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

153. Find Minimum in Rotated Sorted Array - LeetCode

Question 153.?Find Minimum in Rotated Sorted Array Solution 题目大意:给一个按增序排列的数组,其中有一段错位了[1,2,3,4,5,6]变成[4,5,6,1,2,3],把1求出来 思路:遍历,如果当前元素比前一个元素小就是这个元素了 Java实现: public int findMin(int[] nums) { int ans = nums[0]; for (int i=0; i<nums.length; i++) { int pre

Leetcode[154]-Find Minimum in Rotated Sorted Array II

Link: https://leetcode.com/problems/find-minimum-in-rotated-sorted-array-ii/ Follow up for "Find Minimum in Rotated Sorted Array": What if duplicates are allowed? Would this affect the run-time complexity? How and why? Suppose a sorted array is

【LeetCode】Find Minimum in Rotated Sorted Array 在旋转数组中找最小数

Add Date 2014-10-15 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

【leetcode】Find Minimum in Rotated Sorted Array II JAVA实现

一.题目描述 Follow up for "Find Minimum in Rotated Sorted Array":What if duplicates are allowed? Would this affect the run-time complexity? How and why? Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 m

leetcode 154. Find Minimum in Rotated Sorted Array II --------- java

Follow up for "Find Minimum in Rotated Sorted Array":What if duplicates are allowed? Would this affect the run-time complexity? How and why? Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 might be