1. 题目

我们把数组 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
解释:不含 “山脉”。提示:
0 <= A.length <= 10000
0 <= A[i] <= 10000

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-mountain-in-array
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • 找到满足 A[i-1] < A[i] && A[i] > A[i+1]i点,从i向左右扩展到l,r
  • 记录最大长度,i = r跳过已经找过的地方,再重复上述过程
class Solution {public:int longestMountain(vector<int>& A) {if(A.size() < 3)return 0;int i, l, r, maxlen = 0;for(i = 1; i < A.size()-1; ++i){if(A[i-1] < A[i] && A[i] > A[i+1]){l = r = i;while(l >= 1 && A[l-1] < A[l])l--;while(r < A.size()-1 && A[r] > A[r+1])r++;maxlen = max(maxlen, r-l+1);i = r;}}return maxlen;}
};

44 ms 17.7 MB

LeetCode 845. 数组中的最长山脉(中心扩展)相关推荐

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

    https://leetcode-cn.com/problems/longest-mountain-in-array/ 难度:中等   我们把数组 A 中符合下列属性的任意连续子数组 B 称为 &qu ...

  2. 16. Leetcode 845. 数组中的最长山脉 (数组-同向双指针-快慢指针)

    把符合下列属性的数组 arr 称为 山脉数组 :arr.length >= 3 存在下标 i(0 < i < arr.length - 1),满足 arr[0] < arr[1 ...

  3. 845. 数组中的最长山脉

    链接:845. 数组中的最长山脉 题解: class Solution {public:int longestMountain(vector<int>& nums) {if(num ...

  4. 0数组中等 LeetCode845. 数组中的最长山脉

    845. 数组中的最长山脉 描述 把符合下列属性的数组 arr 称为 山脉数组 : arr.length >= 3 存在下标 i(0 < i < arr.length - 1),满足 ...

  5. LeetCode/LintCode 题解丨一周爆刷双指针:数组中的最长山脉

    描述: 我们把数组 A 中符合下列属性的任意连续子数组 B 称为 "山脉": B.length >= 3 存在 0 < i < B.length - 1 使得 B ...

  6. 力扣 数组中的最长山脉

    力扣 数组中的最长山脉 题目描述 我们把数组 A 中符合下列属性的任意连续子数组 B 称为 "山脉": B.length >= 3 存在 0 < i < B.le ...

  7. JAVA程序设计:数组中的最长山脉(LeetCode:845)

    我们把数组 A 中符合下列属性的任意连续子数组 B 称为 "山脉": B.length >= 3 存在 0 < i < B.length - 1 使得 B[0] ...

  8. Leetcode--845. 数组中的最长山脉

    我们把数组 A 中符合下列属性的任意连续子数组 B 称为 "山脉": B.length >= 3 存在 0 < i < B.length - 1 使得 B[0] ...

  9. Leetcode每日一题:845.longest-mountain-in-array(数组中的最长山脉)

    思路:这道题可以设两个标志位up 和 down,分别表示上山状态和经过上山后的下山状态,所以会遇到以下几种情况,分情况处理即可: 1.遇到上坡: 下山状态down==true遇到上坡,说明前一个山脉已 ...

最新文章

  1. boost::histogram::indexed用法的测试程序
  2. 使用 HTTP 缓存防止不必要的网络请求
  3. Dapr微服务应用开发系列3:服务调用构件块
  4. liunx系统不能登陆的问题
  5. php如何打出的正方形行列,javascript实现输出指定行数正方形图案的方法
  6. mysql 配置自动截断_MySql超长自动截断实例详解
  7. 迷你星域冒险服务器维护中,迷你世界星域冒险
  8. Hyper-V 3.0网络虚拟化PART 4:私有交换机
  9. 无缝世界网游服务器架构的设计思路
  10. Looper对文件描述符的监控与处理
  11. 【经验分享】MAC系统自带截屏、录屏小工具
  12. KinectV2 qt opencv 实现平面测量
  13. Python自动化测试进阶系列——自动发邮件功能
  14. 必备配色攻略-绿色篇
  15. 无人机在环保行业中的应用
  16. 树莓派+L9110S电机模块
  17. 专业导师告诉你,有哪些51单片机教程值得大力推荐
  18. 搭配Online:瑞幸昔日“盟友”神州优车,与北汽集团达成战略合作
  19. 免安装版jdk的配置及使用(附绿色版jdk1.7及jdk1.8)
  20. 算法 - 随机密码生成算法

热门文章

  1. tbase同步mysql_mysql主从同步
  2. MATLAB 长度和像素_Matlab中短时傅里叶变换 spectrogram和stft的用法
  3. python中函数的参数传递(传值还是传引用)
  4. python 程序打包 vscode_使用VScode编写python程序并打包成.exe文件
  5. 动易sitefactory 数据库 mysql msssql_动易SiteFactory配置文件(web.config)常用配置节解读...
  6. 一些关于毫米波技术的文献
  7. c++远征之模板篇——标准模板库(STL)
  8. leetcode 764.Largest Plus Sign
  9. 什么时候需要好教材和好教材是怎样的
  10. unity 常用函数