162. Find Peak Element
2016-06-23 17:12
288 查看
A peak element is an element that is greater than its neighbors.
Given an input array where
its index.
The array may contain multiple peaks, in that case return the index to any one of the peaks is fine.
You may imagine that
For example, in array
should return the index number 2.
题意:找到数组的一个峰值。
思路:二分,mid值以及mid+1,如果mid值大于mid+1,则搜索范围变为(left, mid),如果mid值小于mid+1,搜索范围变为(mid+1, right)。
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int left = 0;
int right = nums.size() - 1;
while (left < right){
int mid = (left + right) / 2;
int mid2 = mid + 1;
if (nums[mid] > nums[mid2]){
right = mid;
}
else{
left = mid2;
}
}
return left;
}
};
Given an input array where
num[i] ≠ num[i+1], find a peak element and return
its index.
The array may contain multiple peaks, in that case return the index to any one of the peaks is fine.
You may imagine that
num[-1] = num = -∞.
For example, in array
[1, 2, 3, 1], 3 is a peak element and your function
should return the index number 2.
题意:找到数组的一个峰值。
思路:二分,mid值以及mid+1,如果mid值大于mid+1,则搜索范围变为(left, mid),如果mid值小于mid+1,搜索范围变为(mid+1, right)。
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int left = 0;
int right = nums.size() - 1;
while (left < right){
int mid = (left + right) / 2;
int mid2 = mid + 1;
if (nums[mid] > nums[mid2]){
right = mid;
}
else{
left = mid2;
}
}
return left;
}
};
相关文章推荐
- C++二分查找在搜索引擎多文档求交的应用分析
- C语言编程中实现二分查找的简单入门实例
- C#二分查找算法实例分析
- 二分查找算法在C/C++程序中的应用示例
- 在MySQL中实现二分查找的详细教程
- Java实现二分查找算法实例分析
- Python基于二分查找实现求整数平方根的方法
- python二分查找算法的递归实现方法
- Python二分查找详解
- 简介二分查找算法与相关的Python实现示例
- python二分查找算法的递归实现方法
- Python基于二分查找实现求整数平方根的方法
- 漫谈递归:二分查找算法的递归实现
- 二分查找
- [LeetCode] Find Minimum in Rotated Sorted Array
- 折半查找法
- "二分查找(Binary Search)"与"斐波那契查找(Fibonacci Search)"
- 二分查找
- C#版二分查找(代碼)
- 4495: Least Prime factor 找到最小质因子P的第N小正整数