【Leetcode】Find Minimum in Rotated Sorted Array II

来源:互联网 发布:php 高级算法 编辑:程序博客网 时间:2024/04/30 00:46

这道题的思路是直接找旋转数组中的最小值,但是允许出现重复元素的情况

目标依然是通过移动左指针让左指针到达最小值

情况讨论:

情况1:num[left]<num[middle],最小值一定不在这里,所以去middle+1~right找

情况2:num[left]>num[middle],最小值一定在这里,所以去left~middle里找

情况3:num[left]==num[middle],这个时候无法比较,只有通过移动左指针直到可以比较为止。

比如[10,10,10,1,10]

只有一直移动左指针直到左指针指向1才能比较

所以最坏情况时间复杂度是O(N)

public int findMin(int[] num) {int left = 0;int right = num.length - 1;while (left < right) {if (num[left] < num[right])return num[left];int middle = (left + right) / 2;if (num[left] < num[middle])left = middle + 1;else if (num[left] > num[middle])right = middle;elseleft++;}return num[left];}


0 0
原创粉丝点击