Suppose a sorted array 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.
You may assume no duplicate exists in the array.
思路分析:这题主要考察二分查找,在Rotated Sorted Array中找最小和Search in Rotated Sorted Array相似,仅仅只是此时须要不断把最左边的元素A[l]与A[m]比較
1. 假设A[m] < A[l] 那么应该在左边找,更新右边的边界right。
2.假设A[m] > A[l] 那么应该在右边找,更新左边的边界left。
3.假设A[m]= A[l] ,l++;
上述规律能够通过举样例非常快发现,这样能够每次降低一半元素,得到O(logN)的算法。注意这题A[m] = A[l] 也有可能发生,尽管没有反复元素,可是m和l可能指向同一个元素。比方当这个数组仅仅有两个元素的时候。
相关阅读:
二叉树的遍历 数据结构和算法46
二叉树的存储结构 数据结构和算法45
二叉树的遍历 数据结构和算法46
二叉树2 数据结构和算法44
二叉树 数据结构和算法43
树的存储结构2 数据结构和算法42
ASP.NET 常用的一些DOS命令
Linq to DataSet
上传图片生成略缩图“最佳解决”