因为这个移动不是根据target的比较进行了, 只是进行了上界和下界的逼近,直到两者相差1,就停止。 class Solution { public: int minNumberInRotateArray(vector<int> rotateArray) { if (rotateArray.size() == 0) { return 0; } int left = 0; int right = rotateArray.size() - 1; if (rotateArray[left] < rotateArray[right]) { return rotateArray[0]; } while (left <= right) { int mid = (left + right) / 2; if (rotateArray[mid] >= rotateArray[0]) { left = mid; } else if (rotateArray[mid] <= rotateArray[rotateArray.size()-1]) { right = mid; } if (left + 1 == right) { return rotateArray[right]; } } return 0; } };