162. Find Peak Element

Binary Search: iteration

class Solution {
public:
    int findPeakElement(vector<int>& nums) {
        int l = 0, r = nums.size() - 1;
        while (l < r) {
            int mid = (r - l) / 2 + l;
            if (nums[mid] < nums[mid + 1])
                    l = mid + 1;
                else r = mid;
        }
        return l;
    }
};

Sequential Search: brilliant though O(n)

class Solution {
public:
    int findPeakElement(const vector<int> &num) {
        for(int i = 1; i < num.size(); i ++)
        {
            if(num[i] < num[i-1])
            {// <
                return i-1;
            }
        }
        return num.size()-1;
    }
};

results matching ""

    No results matching ""