zoukankan      html  css  js  c++  java
  • 代码题(23)— 数组中的最长山脉

    1、845. 数组中的最长山脉

    我们把数组 A 中符合下列属性的任意连续子数组 B 称为 “山脉”

    • B.length >= 3
    • 存在 0 < i < B.length - 1 使得 B[0] < B[1] < ... B[i-1] < B[i] > B[i+1] > ... > B[B.length - 1]

    (注意:B 可以是 A 的任意子数组,包括整个数组 A。)

    给出一个整数数组 A,返回最长 “山脉” 的长度。

    如果不含有 “山脉” 则返回 0。 

    示例 1:

    输入:[2,1,4,7,3,2,5]
    输出:5
    解释:最长的 “山脉” 是 [1,4,7,3,2],长度为 5。
    

    示例 2:

    输入:[2,2,2]
    输出:0
    解释:不含 “山脉”。

    提示:

    1. 0 <= A.length <= 10000
    2. 0 <= A[i] <= 10000
    class Solution {
    public:
        int longestMountain(vector<int>& numbers) {
            int num = numbers.size();
            if(num<3)
                return 0;
            int start = 0, maxlen = 0;
            
            for (int i = 0; i < num - 1; ++i)
            {
                int temp = 1,low=i;
                bool pre=false, next= false;
                while (low<num-1 && numbers[low] < numbers[low+1])
                {
                    low++;
                    temp++;
                    pre = true;
                }
                while (low<num-1 && numbers[low] > numbers[low + 1])
                {
                    low++;
                    temp++;
                    next = true;
                }
                if (pre && next)
                    maxlen = max(temp, maxlen);
    
            }
            return maxlen;
        }
    };
  • 相关阅读:
    《实例化需求》
    《编写有效用例》
    Alpha版总结会议
    团队开发冲刺第二阶段11
    团队开发冲刺第二阶段10
    团队开发冲刺第二阶段9
    团队开发冲刺第二阶段8
    团队开发冲刺第二阶段7
    团队开发冲刺第二阶段6
    团队开发冲刺第二阶段5
  • 原文地址:https://www.cnblogs.com/eilearn/p/9359257.html
Copyright © 2011-2022 走看看