本文 https://github.com/youngyangyang04/leetcode-master 已经收录,里面还有leetcode刷题攻略、各个类型经典题目刷题顺序、思维导图,可以fork到自己仓库,有空看一看一定会有所收获,如果对你有帮助也给一个star支持一下吧!

题目链接

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

思路

判断是山峰,主要就是要严格的保存左边到中间,和右边到中间是递增的。

这样可以使用两个指针,left和right,让其按照如下规则移动,如图:

注意这里还是有一些细节,例如如下两点:

  • 因为left和right是数组下表,移动的过程中注意不要数组越界
  • 如果left或者right没有移动,说明是一个单调递增或者递减的数组,依然不是山峰

C++代码如下:

class Solution {
public:bool validMountainArray(vector<int>& A) {if (A.size() < 3) return false;int left = 0;int right = A.size() - 1;// 注意防止越界while (left < A.size() - 1 && A[left] < A[left + 1]) left++;// 注意防止越界while (right > 0 && A[right] < A[right - 1]) right--;// 如果left或者right都在起始位置,说明不是山峰if (left == right && left != 0 && right != A.size() - 1) return true;return false;}
};

如果想系统学一学双指针的话, 可以看一下这篇双指针法:总结篇!

我是程序员Carl,利用工作之余重刷leetcode,更多精彩算法文章尽在:代码随想录,关注后,回复「Java」「C++」「python」「简历模板」等等,有我整理多年的学习资料,可以加我微信,备注「简单自我介绍」+「组队刷题」,拉你进入刷题群,每天一道经典题目分析,我选的每一道题目都不是孤立的,而是由浅入深一脉相承的,如果跟住节奏每篇连续着看,定会融会贯通。

以下资料希望对你有帮助:

  • Carl的开源项目以及开源项目
  • Carl的B站视频:算法和编程语言的讲解
  • C++面试&C++学习指南知识点整理

如果感觉题解对你有帮助,不要吝啬给一个

「leetcode」941. 有效的山脉数组:【双指针】详解相关推荐

  1. 941. 有效的山脉数组

    链接:941. 有效的山脉数组 题解: class Solution {public:bool validMountainArray(vector<int>& A) {if(A.s ...

  2. jQuery数组处理详解(含实例演示)

    jQuery的数组处理,便捷,功能齐全. 最近的项目中用到的比较多,深感实用,一步到位的封装了很多原生js数组不能企及的功能. 最近时间紧迫,今天抽了些时间回过头来看 jQuery中文文档 中对数组的 ...

  3. php 数组 指针,php之数组指针详解

    本文主要和大家分享php之数组指针详解,首先我们会和大家分享php 数组指的针操作方法,希望能帮助到大家. 一.php 数组指针操作 利用php的内置函数:key,current,next(),pre ...

  4. (05)System Verilog 数组类型详解

    (05)System Verilog 数组类型详解 1.1 目录 1)目录 2)FPGA简介 3)System Verilog简介 4)System Verilog 数组类型详解 5)结语 1.2 F ...

  5. C语言中指针与数组的区别,C语言 指针与数组的详解及区别

    C语言 指针与数组的详解及对比 通俗理解数组指针和指针数组 数组指针: eg:int( *arr)[10]; 数组指针通俗理解就是这个数组作为指针,指向某一个变量. 指针数组: eg:int*arr[ ...

  6. python随机生成二维列表_对python产生随机的二维数组实例详解

    对python产生随机的二维数组实例详解 最近找遍了python的各个函数发现无法直接生成随机的二维数组,其中包括random()相关的各种方法,都没有得到想要的结果.最后在一篇博客中受到启发,通过列 ...

  7. 指针数组与数组指针详解

    指针数组与数组指针详解 1.什么是指针数组和数组指针? 指针数组:指针数组可以说成是"指针的数组",首先这个变量是一个数组,其次,"指针"修饰这个数组,意思是说 ...

  8. 史上最全JavaScript数组对象详解(二)

    JavaScript数组对象详解(二) 上一篇博客我们讲到了JavaScript数组对象的创建,访问和属性,接下来一篇博客主要讲一下JavaScript数组对象的方法及使用.说到数组的方法,主要分为两 ...

  9. C语言(函数指针数组)详解

    要了解函数指针数组,可以从三个角度来分析.所谓函数指针数组,从字面意思上来解析,函数指针数组的组成有三个点,函数,指针,数组.首先我们知道,函数指针数组,是一个数组,数组的每个元素是函数指针,也就是一 ...

  10. php的取数组长度,php获取数组长度详解

    php获取数组长度详解 在php中获取数组长度方法很简单,php为我们提供了两个函数可以计算一维数组长度,如count,sizeof都可以直接统计数组长度哦,下面我们来看几个实例吧. php如何获取数 ...

最新文章

  1. while、do while练习——7月24日
  2. Java中父类的静态变量和静态方法的继承问题
  3. oracle运行环境配置,oracle 环境配置开机自启动
  4. 线性代数【14】线性变换 linear transformation
  5. java shiro登录实例_使用Shiro实现登录成功后跳转到之前的页面
  6. HTK下yes/no的识别
  7. ext3日志模式---文件系统
  8. 微信公众号(测试号)开发
  9. 【python 走进NLP】hanNLP 简繁拼音转换
  10. python 物理引擎 摩擦力_python下的Box2d物理引擎的配置
  11. 颂钵带给我们是什么感受
  12. Matlab——sym和syms
  13. 【微信小程序】用户授权以及判断登录是否过期的方法
  14. mysql 1045 远程_启用远程mysql连接:错误1045(28000):拒绝用户访问
  15. 【安全防御】防火墙(二)
  16. CF833D Red-Black Cobweb 点分治、树状数组
  17. Google-Hacking语法总结
  18. 视频教程-MySQL数据库应用快速入门培训课程-MySQL
  19. 31天重构学习笔记26. 避免双重否定
  20. C# (转载)webbrowser专题(参考资料:https://www.cnblogs.com/blogpro/p/11458390.html)

热门文章

  1. mysql 数据库的基本操作语法
  2. 记一次针对Centos的入侵分析
  3. shared_ptr实现copy_on_write
  4. C#表驱动法+一点反射实现“得到指定位数随机不重复字符串”三种方式的封装...
  5. MS SqL2000 数据库置疑状态的解决方法[转]
  6. MFC单文档多视图程序设计与Splitter拆分窗口
  7. Initial Audio Master Suite for Mac - 母带效果套件
  8. 如何在Mac/苹果电脑上接收iPhone短信
  9. Guitar Pro教程之如何设置MIDI键盘
  10. 如何通过NTFS for Mac 15格式化连接的移动磁盘