[英]Leetcode question #845 Longest Mountain in Array
這是我的代碼:
def longestMountain(self, A: List[int]) -> int:
i=1
list=[]
if len(A)<3:
return 0
if (len(A)==3 and A[0]>=A[1] and A[1]<=A[2]):
return 0
while i < len(A):
count=1
if A[i]<=A[i-1]:
i+=1
while (i< len(A) and A[i]>A[i-1]):
count+=1
i+=1
if count==1 or count==len(A):
return 0
while (i< len(A) and A[i]<A[i-1]):
count+=1
i+=1
list.append(count)
return max(list)
在測試 A=[0,1,0,2,2] 的情況時,預期結果為 3,但輸出為 0。有人可以檢查我的代碼嗎?
這是 leetcode 問題:如果以下屬性成立,我們將任何(連續的)子數組 B(A)稱為山:
B.length >= 3 存在一些 0 < i < B.length - 1 使得 B[0] < B[1] < ... B[i-1] < B[i] > B[i+1 ] > ... > B[B.length - 1] (注意 B 可以是 A 的任何子數組,包括整個數組 A。)
給定一個整數數組 A,返回最長山的長度。
如果沒有山,則返回 0。
示例 1:
輸入:[2,1,4,7,3,2,5] 輸出:5 解釋:最大的山是 [1,4,7,3,2],長度為 5。例 2:
輸入:[2,2,2] 輸出:0 解釋:沒有山。
我們可以計算起伏並使用max()
:
class Solution:
def longestMountain(self, nums):
longest = 0
up = down = 0
for i in range(1, len(nums)):
if down and nums[i - 1] < nums[i] or nums[i - 1] == nums[i]:
up = down = 0
up += nums[i - 1] < nums[i]
down += nums[i - 1] > nums[i]
if up and down:
longest = max(longest, up + down + 1)
return longest
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.