/*O(n)解法。直接比较相邻数字即可。*/
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int n = nums.size();
for(int i = 0; i < nums.size(); ++i){
if(i < nums.size() - 1){
if(nums[i] > nums[i+1]) return i;
}
else return i;
}
}
};
/*O(logn)解法。二分搜索。*/
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int left(0), right(nums.size()-1);
while(left < right){
int mid = (left + right) / 2;
if(nums[mid] < nums[mid+1]) left = mid + 1;
else right = mid;
}
return left;
}
};
LeetCode之Find Peak Element
最新推荐文章于 2018-02-06 11:29:57 发布