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
一个升序数组在中间某一点被翻转,让找出最小元素
思路:
先把第一个元素当作最小元素,然后遍历数组,找到翻转的点,
比如[3, 4, 5, 1, 2]
翻转的点在1,而知道翻转的点后面仍然是升序的,所以翻转点处是后面一段的最小值,
那么只需要在前面一段最小值和后面一段最小值中取较小的那个就行了
//0ms
public int findMin(int[] nums) {
int minNum = nums[0];
for (int i = 1; i < nums.length; i++) {
if (nums[i] < nums[i - 1]) {
minNum = Math.min(minNum, nums[i]);
break;
}
}
return minNum;
}