https://leetcode.com/problems/longest-turbulent-subarray/
请从阵列arr 找出 "turbulent" 子阵列,turbulent意思如下:
当 arr[i] 大於arr[i+1]时,arr[i+2] 也要大於arr[i+1],简单来说就是上个数字比较大(小),下个数字也要较大(小)
今天有点来不及了,所以先拿别人的程序码讲解
class Solution:
def maxTurbulenceSize(self, arr: List[int]) -> int:
def cmp(a, b):
if a > b: return 1
elif a < b: return -1
else: return 0
N = len(arr)
ans = 1
anchor = 0
for i in range(1, N):
c = cmp(arr[i-1], arr[i])
if c == 0:
anchor = i
elif i == N-1 or c * cmp(arr[i], arr[i+1]) != -1:
ans = max(ans, i - anchor + 1)
anchor = i
return ans
阵列中比大小会出现 >、<、= 三种状况,我们将他对应到 1、-1、0
接着我们比较前一项(arr[i-1], arr[i]),如果等於0就记录位置当作起点
接着比较後项的对应数字,并乘上前项对应数字:
两个数字之间的关系就只有三种,所以我们只要记录前一组碰到的关系就好
class Solution:
def maxTurbulenceSize(self, arr: List[int]) -> int:
ans = 1
sign = '>'
count = 1
for i in range(1, len(arr)):
if arr[i-1] == arr[i]:
count = 1
if arr[i-1] > arr[i]:
if sign == '>': count = 2
else: count += 1
sign = '>'
if arr[i-1] < arr[i]:
if sign == '<': count = 2
else: count += 1
sign = '<'
ans = max(ans, count)
return ans
时间赶上 SAFE
<<: DAY 2:Single Threaded Execution Pattern,门就只有一个大家好好排队啊~
前言 好啦~昨天测试了nonce的方法 今天来谈谈剩下需要的api参数 并且来透过容易上手的node...
挑战目标: MockNative Camp 昨天我们建立了CommonResponse.java来做...
延续昨天的实作,今天继续研究一下大学学生人数的近况。 之前,我们曾经使用 csv 档实...
我们定义了管理者主要的工作(what),在作更深入讨论 how 之前,我希望能引导你与自己有个诚实...
今天直奔新主题!XDD 昨天提要 trace 的程序码,trace 的不多,今天就还是先来看个文件,...