852. 山脉数组的峰顶索引 C++题解

题目要求: 852. 山脉数组的峰顶索引

题目解析

今天同样是个简单的二分题,题目是让你求一个数组中先上升,后下降的那个点的索引。还有我在上一个题目中问道的,二分的时候数组不一定是有序的,这个题目就是一种表现形式,当然还有其他的表现形式。

解题思路

这个题大家可能用的是的解法,但是题目最后要求是用,所以这个题还是二分。可能大家想想就能想到了,先上升后下降的点,那么我们先找到中间的一个数,把这个数与前一个和后一个进行比较,如果是一直上升,我们就知道结果在后半个区间,如果是一直下降,我们知道结果在左半个区间。否则当前的值就是结果。

代码和详细注释如下

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


通过情况

欢迎关注微信公众号:【没伞的孩子拼命跑】 和我的小伙伴们一块打卡吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值