作者: 负雪明烛
id: fuxuemingzhu
个人博客: http://fuxuemingzhu.cn/


题目地址:https://leetcode.com/problems/valid-mountain-array/description/

题目描述

Given an array A of integers, return true if and only if it is a valid mountain array.

Recall that A is a mountain array if and only if:

  • A.length >= 3
  • There exists some i with 0 < i < A.length - 1 such that:
    • A[0] < A[1] < ... A[i-1] < A[i]
    • A[i] > A[i+1] > ... > A[B.length - 1]

Example 1:

Input: [2,1]
Output: false

Example 2:

Input: [3,5,5]
Output: false

Example 3:

Input: [0,3,2,1]
Output: true

Note:

  1. 0 <= A.length <= 10000
  2. 0 <= A[i] <= 10000

题目大意

判断一个数组是不是山形数组,山形数组最少有3个数字,中间有个最大的数字,往两边都是依次减小的。

解题方法

方法很直接,先判断是不是依次增加,然后再判断是不是依次减小,如果整个数组都是这样的就是山形数组了。

所以有两个while循环,一个是向后查找更大的数字,第二个是向后找最小的数字。在第一个while结束的时候,找到的元素的位置应该在数组中间,而第二个while结束之后,元素的位置应该在数组的结尾。

时间复杂度是O(N),空间复杂度是O(1)。

class Solution:
def validMountainArray(self, A):
"""
:type A: List[int]
:rtype: bool
"""
N = len(A)
if N < 3:
return False
i = 0
while i < N - 1:
if A[i] < A[i + 1]:
i += 1
else:
break
if i == 0 or i == N - 1: return False
while i < N - 1:
if A[i] > A[i + 1]:
i += 1
else:
break
return i == N - 1

其实while的条件也可以使用判断语句,这样的话,我们就直接停止。

class Solution(object):
def validMountainArray(self, A):
"""
:type A: List[int]
:rtype: bool
"""
print(A)
N = len(A)
if N < 3: return False
i = 0
while i < N - 1 and A[i + 1] > A[i]:
i += 1
if i == 0 or i == N - 1: return False
while i < N - 1 and A[i] > A[i + 1]:
i += 1
return i == N - 1

日期

2018 年 11 月 18 日 —— 出去玩了一天,腿都要废了
2018 年 11 月 24 日 —— 周六快乐

最新文章

  1. io.js入门(一)—— 初识io.js
  2. Knockout.js随手记(4)
  3. 删除数组中重复的元素(JSON)
  4. 记录我开始学习 Git的路程
  5. Android ActivityThread(主线程或UI线程)简介
  6. 让IE9支持html5
  7. winform 记录全局异常捕获
  8. 初定为EGame
  9. Visual Prolog 的 Web 专家系统 (8)
  10. 实现鼠标悬停,div勾画div边框的动画
  11. jquery即时获取上传文件input file文件名
  12. 单片机成长之路(51基础篇) - 017 C51中data,idata,xdata,pdata的区别(转)
  13. (转)SVN搭建(附下载地址)
  14. oracle 分页 where 三层
  15. POJ1062:昂贵的聘礼(枚举+迪杰斯特拉)
  16. JVM体系结构和工作方式
  17. oracle的约束隐式创建索引和先索引后约束的区别
  18. 共识算法 pos,Dpos
  19. BZOJ5011 &amp; 洛谷4065 &amp; LOJ2275:[JXOI2017]颜色——题解
  20. springboot(五)-使用Redis

热门文章

  1. python 字典 key 对应多个 value
  2. C语言 指针数组指针
  3. illumina SNP 芯片转基因型矩阵
  4. jenkins原理简析
  5. mysql-日期时间函数大全
  6. CentOS6安装Zabbix(RPM包)
  7. mysql 实现某年单季度内的品牌TOPn销量在此年此单季度内销量占比
  8. Demo02一千以内的水仙花数
  9. 日常Java 2021/10/13
  10. Hadoop 相关知识点(一)