代码改变世界

Find Minimum in Rotated Sorted Array

2015-04-02 10:33  笨笨的老兔子  阅读(133)  评论(0编辑  收藏  举报

一个有序数组被切成两段之后进行了交换得到一个新数组,求新数组中最小的数字

(i.e., 0 1 2 4 5 6 7 might become 4 5 6 7 0 1 2).

思路:根据mid的大小就可以选择到底是head=mid还是tail=mid

  1. class Solution {
  2. public:
  3. int findMin(vector<int> &num) {
  4. int head = 0, tail = num.size() - 1;
  5. while (head < tail)
  6. {
  7. int mid = head + (tail - head) / 2;
  8. if (num[mid] > num[tail] )
  9. head = mid+1;
  10. else if (num[mid] < num[tail])
  11. tail = mid;
  12. else
  13. {
  14. tail--;
  15. }
  16. }
  17. return num[head];
  18. }
  19. };