154. 寻找旋转排序数组中的最小值 II

mac2024-04-04  35

基本和【153】一样,直接遍历即可。若用二分查找,由于可以存在重复值,求边界时可能出现左边界值和右边界值一样的情况,为了排除这种情况,先预处理左右边界使二者不等。

public class Solution { public int FindMin(int[] nums) { int l = 0,r = nums.Length-1; while(l < r && nums[l] == nums[r] ) r--; while(l < r) { int mid = (l+r)/2; if(mid > 0 && nums[mid] < nums[mid-1]) return nums[mid]; if(nums[mid] > nums[r]) l = mid + 1; else r = mid - 1; } return nums[l]; } }

 

最新回复(0)