1. 题目

2. 解答

2.1 方法一

left 数组表示当前元素左边比当前元素小的元素个数,right 数组数组表示当前元素右边比当前元素小的元素个数。在山脉的中间 B[i] 处,其左边和右边肯定都有小于 B[i] 的元素,而山脉的长度即为 left[i] + right[i] + 1。

class Solution {public:int longestMountain(vector<int>& A) {int n = A.size();if (n < 3)    return 0;vector<int> left(n, 0);vector<int> right(n, 0);for (int i = 1; i < n; i++){if (A[i] > A[i-1])  left[i] = left[i-1] + 1;}for (int i = n-2; i >= 0; i--){if (A[i] > A[i+1])  right[i] = right[i+1] + 1;;}int len = 0;for (int i = 0; i < n; i++){if (left[i] != 0 && right[i] != 0)len = max(len, left[i] + right[i] + 1);}return len;   }
};

2.2 方法二

max_than_left 数组若为 1 则表明当前元素比左边元素大,max_than_right 数组若为 1 则表明当前元素比右边元素大。

若为山脉则两个数组应该为如下序列

数组取值
max_than_left 1(可选) 1(必选) 0(可选)
max_than_right 0(可选) 1(必选) 1(可选)
class Solution {public:int longestMountain(vector<int>& A) {int n = A.size();if (n < 3)    return 0;vector<int> max_than_left(n, 0);vector<int> max_than_right(n, 0);for (int i = 1; i < n; i++){if (A[i] > A[i-1])  max_than_left[i] = 1;}for (int i = 0; i < n-1; i++){if (A[i] > A[i+1])  max_than_right[i] = 1;}int result = 0;int len = 0;int left_flag = 0;int middle_flag = 0;int right_flag = 0;for (int i = 0; i < n; i++){if (max_than_left[i] == 1 && max_than_right[i] == 0){if (left_flag)  result++;    else    {result = 3;left_flag = 1;}   }else if (max_than_left[i] == 1 && max_than_right[i] == 1){if (left_flag)  {result++;  }else{result = 3;}left_flag = 0;middle_flag = 1;}else if (max_than_left[i] == 0 && max_than_right[i] == 1){if (right_flag) result++;if (middle_flag)     {middle_flag = 0;right_flag = 1;result++;}  }else{right_flag = 0;middle_flag = 0;left_flag = 0;result = 0;}if (middle_flag || right_flag) len = max(len, result);}return len;}
};

获取更多精彩,请关注「seniusen」!

LeetCode 845——数组中的最长山脉相关推荐

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

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

  2. LeetCode 845. 数组中的最长山脉(中心扩展)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最新文章

  1. py2exe打包python_和python爱好者谈谈如何在新版python中使用py2exe打包可执行程序
  2. Xamarin Essentials教程设备信息DeviceInfo
  3. MySQL 数据库sql命令查看表属性,mysql查看指定表的各字段最大值、是否为空等属性实例演示
  4. medianBlur函数
  5. web笔记Error:That IP address
  6. 《设计师要懂心理学》-第五章-人如何集中注意力
  7. vc++ 项目里External dependencies 的文件存放内容和各个文件的存放内容
  8. ERROR: Resource shrinker cannot be used for libraries报错Android开发之迁移老项目到Android Studio3.0报错的问题解决方法
  9. 谈到云原生, 绕不开容器化
  10. php zip下载损坏,php – 从zip中提取时损坏图像
  11. (3)FPGA面试题2倍分频
  12. 滴滴章文嵩:一个人的 20 年开源热情和国内互联网开源运动
  13. 回文数问题,两数互换位置问题(不用第三个变量)
  14. 浅谈Empty、Nothing
  15. 开机bat脚本解决steam无法自动登陆
  16. 设备\Device\Harddisk0\D 有一个不正确的区块
  17. 2个步骤,让人才成为组织进化的发动机
  18. 3541. 代码查重
  19. 从百度有啊独立看O2O发展的三大趋势
  20. Oracle创建数据库连接——DATABASE LINKS

热门文章

  1. 极智装修知识|飘窗五大改造妙招,让你只想窝在这
  2. 算法设计与分析-递归与卡特兰数
  3. python写的串口助手_Python实现的简单的单片机串口助手程序
  4. 中山香山杯 misc write up
  5. vue-学生信息管理系统
  6. 我的缅甸往事(二) | 惊魂南塘河
  7. pythonos文件目录方法_PythonOS 文件目录方法
  8. 加号和减号在一起怎么读_加号和减号
  9. 实验一 9V稳压电源电路实验
  10. android 计时器工具类,Android实现计时器功能