class Solution(object):
def maxTurbulenceSize(self, A: 'List[int]') -> int:
n = len(A)
if n == 1:
return 1
elif n == 2:
if A[0]!=A[1]:
return 2
else:
return 1
else:#n >= 3
maxsize = 1
size = 1
LowHighLow = True
i = 0
while i<n:
NeedJudge = False
for j in range(i,n):
if j == n-1:
maxsize = max(maxsize,size)
return maxsize
if not NeedJudge:
if A[j] < A[j+1]:
LowHighLow = True
size += 1
NeedJudge = True
elif A[j] > A[j+1]:
LowHighLow = False
size += 1
NeedJudge = True
else:
NeedJudge = False
i += 1
break
else:
if LowHighLow:
if A[j] > A[j+1]:
LowHighLow = False
size += 1
else:
NeedJudge = False
maxsize = max(maxsize,size)
size = 1
if i==j:
i += 1
else:
i = j
break else:
if A[j] < A[j+1]:
LowHighLow = True
size += 1
else:
NeedJudge = False
maxsize = max(maxsize,size)
size = 1
if i==j:
i += 1
else:
i = j
break
return maxsize

思路:滑动窗口。

这种线性的程序,再长一倍,问题也不大。不过可读性就比较差了。

简单说一下用到的变量的作用:NeedJudge就是是否需要判断,对于每次滑动窗口的起始位置(i==j),NeedJudge都是False,这样只需要根据起始的两个位置的元素的大小,来确定是凹凸凹型还是凸凹凸型。变量LowHighLow=True表示凹凸凹型,LowHighLow=False表示凸凹凸型。这样就可以判断,当前滑动窗口后续的值是否是合法的。

如果遇到不合法,记录当前滑动窗口的大小size,并更新maxsize保留最大的滑动窗口。

也许这个版本程序比较粗糙,但是能正确执行,也是重要的成果,代码的优化,也是由粗到精,一步一步的完成的嘛。

leetcode978的更多相关文章

  1. leetcode-978. 最长湍流子数组

    leetcode-978. 最长湍流子数组 Points 数组 DP 题意 当 A 的子数组 A[i], A[i+1], ..., A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= ...

  2. [Swift]LeetCode978. 最长湍流子数组 | Longest Turbulent Subarray

    A subarray A[i], A[i+1], ..., A[j] of A is said to be turbulent if and only if: For i <= k < j ...

  3. LeetCode978. 最长湍流子数组

    问题:978. 最长湍流子数组 当 A 的子数组 A[i], A[i+1], ..., A[j] 满足下列条件时,我们称其为湍流子数组: 若 i <= k < j,当 k 为奇数时, A[ ...

随机推荐

  1. Python-100道练习题答案

    题目链接:http://www.runoob.com/python/python-100-examples.html #5. # def find_max(): # a=int(input(" ...

  2. maven+eclipse+jboss+oracle 12c+memcached+AngularJS

    Maven 参考梁总的: Eclipse Java EE IDE for Web Developers集成的Maven 3 指向自己安装的 Maven Maven下载.安装和配置(二) 在本地配置ma ...

  3. 解决腾讯云封锁SS(shadow--socks)访问google问题

    腾讯云windows主机,若使用SS(shadow--socks)采用加密算法aes-256-cfb,访问google的时候会被dropped connection. 解决办法更改ss server加 ...

  4. php商品对比功能代码分享

    商品对比调用的JS文件(包含了商品对比框浮动JS): /*浮动窗口*/ (function(){     var n=10;   var obj=document.getElementById(&qu ...

  5. Unity3D外包 团队更新一下UE4和Unity3D案例

    欢迎联系我们索取,谢谢! 有项目外包请联系QQ:372900288 索取案例.

  6. CentOS7(64) yum安装、配置PostgreSQL 11

    一.安装postgresql11 1.Install the repository RPM: 添加RPM yum install https://download.postgresql.org/pub ...

  7. 7.2 if else 语句

    7.2 if else 语句 if else语句的通用形式是: if ( expression ) statement1 else statement2 如果expression为真(非0),则执行s ...

  8. nice team小组出山啦!(第二次会议)

    为什么niceteam小组一个月没有更新博客?因为我们正在埋头苦干.是的过去的一个月我们的小组成员正沉浸在知识的海洋中,今天是我们出山的好日子,特地记录一下我们的工作进度. 在项目经理的安排下,我们小 ...

  9. laravel Faker-1.faker假数据

    1. 安装 composer require fzaninotto/faker --dev 2. 创建 migrations 参考:laravel文档 3. 定义ModelFactory 说明: 默认 ...

  10. LeetCode【112. 路径总和】

    思路就是从根节点开始向下选节点,依次与sum比较大小,若小,则向下选左右节点其中一个,若大,则接下来判断是否是叶子节点,若是,则返回false 若不是,则上一步选另一节点,再将上述重新执行. 对于叶子 ...