leetcode刷题笔记(python3)--154. Find Minimum in Rotated Sorted Array II

154. Find Minimum in Rotated Sorted Array II

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.

The array may contain duplicates.

Example 1:

Input: [1,3,5]
Output: 1
Example 2:

Input: [2,2,2,0,1]
Output: 0
Note:

This is a follow up problem to Find Minimum in Rotated Sorted Array.
Would allow duplicates affect the run-time complexity? How and why?

解题

func findMin(nums []int) int {
	lg := len(nums)
	l := 0
	r := lg - 1
	if l+1 > r {
		return min(nums[l], nums[r])
	}
	for l < r {
		mid := (l + r) / 2
		if nums[r] > nums[mid] {
			r = mid
        } else if nums[r]==nums[mid]{
            if findLeftbound(nums,mid) {
                r = mid
            } else {
                l = mid+1
            }
        } else {
			l = mid + 1
		}
	}
	return nums[l]
}

func min(i int, j int) int {
	if i < j {
		return i
	} else {
		return j
	}
}

func findLeftbound(nums []int, mid int) bool {
	for i:=mid;i>=0;i--{
		if nums[i]< nums[mid] {
			return true
		}
	}
	return false
}
发布了98 篇原创文章 · 获赞 0 · 访问量 1444

猜你喜欢

转载自blog.csdn.net/weixin_44555304/article/details/104434106