Find Minimum in Rotated Sorted Array II
来源:互联网 发布:mac电脑卸载 编辑:程序博客网 时间:2024/06/07 01:01
leetcode上面刷题时遇到的第一个hard类型,花了很长的时间推导公式,得出结论,最终领悟到题目的精髓之后才知道:要转动脑子呀,搞复杂了!
题目
suppose an array sorted in ascending order is rotated at some pivot unknown to you heforehand.(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.
分析
1.理解题目
题目中array的两部分是整体互换的,假设替换之后的数组为:
不管怎么rotate,如果将这个array连接成一个首尾相连的环,相邻元素间的位置不变。如下图所示:
- 开始是0是其实位置,数组为
[0,1,2,4,5,6,7] - 在元素4位置上进行rotate, 变成
[4,5,6,7,0,1,2] , 相当于环的起始位置变成了4! - 于是这样的rotate操作,其实可以看作是在环上寻找新的起始点
2.设计算法
问题转换成:已知一个array, 如果看作首尾相连的一个环,已知环的起始点,求这个环中的最小数。
分析环的结构可知,除了在
算法1:直接寻找第一次呈现减小趋势的下标,也就是找到
算法2:根据环的性质,利用二分法求解:
- 设置三个指针:
start,end,mid [mid,end]: 中nums[mid]>nums[end],则在后半部分start=mid+1 nums[mid]=nums[end],则应该移动end,end−=1 nums[mid]<nums[end],则在前半部分end=mid
这里的二分法代码需要好好斟酌,虽然二分法几乎是算法课的第一个算法,但是一次性准确无误的写出其代码还是有些困难,至少对我来说是这样的!
阅读全文
0 0
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- Find Minimum in Rotated Sorted Array II
- 堆
- 算法导论--逆序对
- 学习Linux基本命令60个(上)
- LeetCode题解 week4
- Ubuntu 安装Java和Scala
- Find Minimum in Rotated Sorted Array II
- python学习——特殊方法__str__的用法
- CSS3动画-定位元素层级覆盖问题
- 日记—10.1
- 后缀数组+贪心+隔板法
- 【LCA】洛谷2420[让我们异或吧]题解
- Codeforces 864F Cities Excursions(离线处理+Tarjan)
- Framework学习(四)Launcher启动过程
- LeetCode 0066