LeetCode941. Valid Mountain Array

文章目录

    • 一、题目
    • 二、题解

一、题目

Given an array of integers arr, return true if and only if it is a valid mountain array.

Recall that arr is a mountain array if and only if:

arr.length >= 3
There exists some i with 0 < i < arr.length - 1 such that:
arr[0] < arr[1] < … < arr[i - 1] < arr[i]
arr[i] > arr[i + 1] > … > arr[arr.length - 1]

Example 1:

Input: arr = [2,1]
Output: false
Example 2:

Input: arr = [3,5,5]
Output: false
Example 3:

Input: arr = [0,3,2,1]
Output: true

Constraints:

1 <= arr.length <= 104
0 <= arr[i] <= 104

二、题解

class Solution {
public:
    bool validMountainArray(vector<int>& arr) {
        int n = arr.size();
        if(n < 3) return false;
        int maxVal = *max_element(arr.begin(),arr.end());
        int index = find(arr.begin(),arr.end(),maxVal) - arr.begin();
        if(index == 0 || index == n - 1) return false;
        int pre = arr[0];
        for(int i = 1;i < n;i++){
            int cur = arr[i];
            if(i < index && (cur <= pre || cur >= maxVal)) return false;
            if(i > index && (cur >= pre || cur >= maxVal)) return false;
            pre = cur;
        }
        return true;
    }
};

你可能感兴趣的:(算法,数据结构,c++,leetcode)