10 25每日一題 845 陣列中的最長山脈

2021-10-25 05:21:15 字數 1347 閱讀 9784

我們把陣列a中符合下列屬性的任意連續子陣列b稱為 「山脈」:

(注意: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

解釋:不含 「山脈」。

通過次數14,461| 提交次數36,604

**實現

class

solution

:def

longestmountain

(self, a: list[

int])-

>

int:

idx, re, ls, rs =1,

0,0,

0while idx<

len(a)

:while idx<

len(a)

and a[idx]

==a[idx-1]

: idx+=

1 ls, rs = idx-

1,idx-

1while idx<

len(a)

and a[idx]

>a[idx-1]

: idx+=

1 rs=idx-

1if rs==ls:

idx, ls, rs = idx+

1, ls+

1, rs+

1while rs>ls:

while idx<

len(a)

and a[idx]

: idx+=

1if idx-

1>rs:

re =

max(idx-ls, re)

ls = idx-

1return re

每日一題 45 陣列中的逆序對

題目來自劍指offer 題目 舉例 思路 方法 1 暴力方法 對於陣列中任意兩個數,均做一次判定,判斷是否為逆序對。時間複雜度 o n 2 方法 2 類似於歸併排序。1 首先把陣列分成兩個長度均等的陣列 2 分布對這兩個陣列排序 小到大 3 之後再求逆序對,同時對把這兩個陣列合併到乙個陣列 時間複雜...

LeetCode 每日一題 陣列中數字出現的次數

陣列中數字出現的最大次數 乙個整型陣列 nums 裡除兩個數字之外,其他數字都出現了兩次。請寫程式找出這兩個只出現一次的數字。要求時間複雜度是o n 空間複雜度是o 1 示例 1 輸入 nums 4,1,4,6 輸出 1,6 或 6,1 示例 2 輸入 nums 1,2,10,4,1,4,3,3 輸...

每日一題 找出陣列中的幸運數

在整數陣列中,如果乙個整數的出現頻次和它的數值大小相等,我們就稱這個整數為 幸運數 給你乙個整數陣列 arr,請你從中找出並返回乙個幸運數。如果陣列中存在多個幸運數,只需返回 最大 的那個。如果陣列中不含幸運數,則返回 1 示例 1 輸入 arr 2,2,3,4 輸出 2 解釋 陣列中唯一的幸運數是...