题目

今天就一个题目,有些不好意思🙈

  1. 寻找峰值

具体点,就是求解数组中的极大值,并且假设相邻的不会相等,同时nums[-1],nums[n+1]为负无穷。

解题思路

​ 看着题目很简单,一遍遍历即可,但是复杂的是O(n)的。题目要求$O(log(n))$。所以还需改进。

​ 我是看了一眼解答提到的边界值,想到解法的。

​ 思路就是比较中值mid和两段的中间值l_mid,r_mid。

if(nums[mid]<nums[l_mid]){//在左边
right = mid;
continue;
}
if(nums[mid]<nums[r_mid]){//在右边
left = mid;
continue;
}
else{//在中间
left = l_mid;
right = r_mid;
}
}

还是代码解释的快。嘎嘎嘎!

还有一些边界值,这些比较简单,数组数目1,2可以单独考虑。再一个,最先比较边界的是否为极值也是一个简化的过程。

最终还是完成,花费的时间比较久,主要是没有安心,而且没有认真理解题目。继续🐱‍🏍。