153. Find Minimum in Rotated Sorted Array
Posted wentiliangkaihua
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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.
Example 1:
Input: [3,4,5,1,2] Output: 1
Example 2:
Input: [4,5,6,7,0,1,2] Output: 0
class Solution public int findMin(int[] nums) int res = nums[0]; for(int i = 0; i < nums.length-1; i++) if(nums[i+1] < nums[i]) return nums[i+1]; return res;
第一个右<左的时候就是要找的。
class Solution public int findMin(int[] nums) // int res = nums[0]; // for(int i = 0; i < nums.length-1; i++) // if(nums[i+1] < nums[i]) return nums[i+1]; // // return res; if(nums.length == 1) return nums[0]; int left = 0; int right = nums.length - 1; while (left < right) int mid = left + (right - left) / 2; if (nums[mid] < nums[right]) right = mid; else left = mid+1; return nums[left];
也可以用二分法,和查找target相反,
- 若
A[mid] < A[right]
,则区间[mid,right]
一定递增,断层一定在左边 - 若
A[mid] > A[right]
,则区间[left,mid]
一定递增,断层一定在右边 nums[mid] == nums[right]
,这种情况不可能发生,因为数组是严格单调递增的,不存在重复元素
以上是关于153. Find Minimum in Rotated Sorted Array的主要内容,如果未能解决你的问题,请参考以下文章
153. Find Minimum in Rotated Sorted Array
#Leetcode# 153. Find Minimum in Rotated Sorted Array
153. Find Minimum in Rotated Sorted Array
153. Find Minimum in Rotated Sorted Array