题目链接: Find Minimun in Rotated Sorted Array
题目意思: 给定一个旋转数组,找出这个旋转数组的最小元素。旋转数组的定义是,把一个从小到大排好序的数组,取一部份放到末尾,例如0 1 2 4 5 6 7 取 0 1 2放到末尾,变成旋转数组4 5 6 7 0 1 2
代码:
class Solution { public: int findMin(vector<int> &num); }; int Solution::findMin(vector<int> &num) { int length = num.size(); if (length == 1) { return num[0]; } int p1 = 0; int p2 = length -1; while (p1 < p2) { if (p1+1 == p2) { return min(num[p1], num[p2]); } int mid = (p1 + p2) >> 1; if (num[mid] < num[p2]) { p2 = mid; } else { p1 = mid; } } }