假设按照升序排序的数组在预先未知的某个点上进行了旋转。
( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。
请找出其中最小的元素。
你可以假设数组中不存在重复元素。
示例 1:
输入: [3,4,5,1,2]
输出: 1
示例 2:
输入: [4,5,6,7,0,1,2]
输出: 0
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-minimum-in-rotated-sorted-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:
对于这种类型的题目,之前已经遇到过了,就是旋转排序数组,我感觉这里的题目,还是更简单的,因为不需要多一步二分,只需要找到那个分界点。如果有不懂的,可以查找之前的leetcode33,81题目,都是一样的,这里就不多说了。
1 class Solution { 2 public int findMin(int[] nums) { 3 int l=0; 4 int r=nums.length-1; 5 while(l<=r) 6 { 7 if(nums[l]<=nums[r]) 8 return nums[l]; 9 int mid=l+(r-l)/2; 10 if(nums[mid]<nums[l]) 11 r=mid; 12 else 13 l=mid+1; 14 } 15 return nums[r]; 16 } 17 }
原文地址:https://www.cnblogs.com/cold-windy/p/11875611.html
时间: 2024-09-30 20:11:16