162. 尋找峯值

因爲題目是log n的時間複雜度,所以很容易想到二分查找。主要是看區間選擇的條件。注意 left = mid + 1 ; 不能是mid,否則死循環。

class Solution {

public:

    int findPeakElement(vector<int>& nums) {

        if(nums.size() == 1) return 0;

        int mid, left(0), right(nums.size()-1);

        while(left < right){

            mid = (right + left) / 2 ;     

            cout << "left:" << left << " right" << right << "mid:" << mid << endl;

            if(nums[mid] > nums[mid+1]) right = mid; 

            else left = mid + 1 ;             

        }

        return left;

    }

};

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章