总结一下:二分查找比较多通常直接遍历会超时,因此选择复杂度为指数( logarithmic)O(logn)的二分查找,最重要的是target的值,缩小范围的判断条件,每道题都不一样,有的是最小的、最大的、有的是要找到特定值,有的是判断选择右边还是左边(比如有些旋转的排序数组,查找特定值、或最大、最小值)。在之后的训练中,希望可以加强找到合适的判断条件/target
方法1:采用二分查找,查出这样一个位置即可,我们知道二分查找要比较的是 target 元素,本题的 target 元素是 mid 的后一个元素,即 nums[mid] 与 nums[mid+1] 进行比较:
class Solution {
public:
int findPeakElement(vector<int>& nums) {
int len=nums.size();
if(len<=0) return 0;
if(len==1) return 0;
int l=0;
int r=len-1;
int mid;
while(l<r)