LeetCode 941 有效的山脉数组

2021-03-20 18:24

阅读:591

标签:位置   als   cto   执行   ++   中间   bool   tor   没有   

LeetCode 941 有效的山脉数组

https://leetcode-cn.com/problems/valid-mountain-array/

根据题意可以知道,当一个数组中的最大值在数组的中间某个位置(不能在数组的左右两端)并且这个位置往左边和右边走时数组是严格递减时,该数组才是有效的山脉数组。假设我们定义两个指针ij从别指向数组的左右两端并往数组中间走,只要是严格递增的那么我们就对ij分别执行自增和自减。从下面的几个例子中可以看出,只有当满足条件i == j && i != 0 && i != A.size() - 1时,该数组才是有效山脉数组。

技术图片
技术图片
技术图片技术图片

所以,代码可以写成:

class Solution {
public:
    bool validMountainArray(vector& A) {
        int sz = A.size();
        int i = 0, j = sz - 1;

        while (i + 1 = 0 && A[j] 

大家可能会有疑问,就是题目中要求山脉数组的元素个数是大于等于3的,这个限制条件为什么没有在代码中直接体现呢?其实,就像上图中给出的例子一样,只要当数组元素个数小于3个时,ij指针一定是相等的,但是它们要么等于0,即i == j && i == 0;要么是等于sz - 1,即i == j && i == sz - 1。这种情况下,上述代码是直接返回false的。

LeetCode 941 有效的山脉数组

标签:位置   als   cto   执行   ++   中间   bool   tor   没有   

原文地址:https://www.cnblogs.com/wallace-lai/p/13919625.html


评论


亲,登录后才可以留言!