16. Leetcode 845. 数组中的最长山脉 (数组-同向双指针-快慢指针)
生活随笔
收集整理的這篇文章主要介紹了
16. Leetcode 845. 数组中的最长山脉 (数组-同向双指针-快慢指针)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
把符合下列屬性的數(shù)組 arr 稱(chēng)為 山脈數(shù)組 :arr.length >= 3
存在下標(biāo) i(0 < i < arr.length - 1),滿(mǎn)足
arr[0] < arr[1] < ... < arr[i - 1] < arr[i]
arr[i] > arr[i + 1] > ... > arr[arr.length - 1]
給出一個(gè)整數(shù)數(shù)組 arr,返回最長(zhǎng)山脈子數(shù)組的長(zhǎng)度。如果不存在山脈子數(shù)組,返回 0 。示例 1:輸入:arr = [2,1,4,7,3,2,5]
輸出:5
解釋:最長(zhǎng)的山脈子數(shù)組是 [1,4,7,3,2],長(zhǎng)度為 5。
示例 2:輸入:arr = [2,2,2]
輸出:0
解釋:不存在山脈子數(shù)組。思路:首先固定山峰值,然后分別尋找左、右半邊山脈的長(zhǎng)度。A[left] < A[left+1],繼續(xù)向左尋找A[right] < A[right-1],繼續(xù)向右尋找 如果以當(dāng)前山峰的山脈長(zhǎng)度比最長(zhǎng)山脈長(zhǎng),更新最長(zhǎng)山脈。注意:我們可以在只有當(dāng)前點(diǎn)為山峰的情況(即 A[i-1] < A[i] and A[i+1] < A[i]),才在左右尋找最長(zhǎng)山峰,這樣可以大大降低搜索的次數(shù)。class Solution:def longestMountain(self, arr: List[int]) -> int:max_length = 0for i in range(1, len(arr)-1):left, right = i, iif arr[i] > arr[i - 1] and arr[i] > arr[i + 1]:while left - 1 >= 0 and arr[left] > arr[left-1]:left -= 1while right + 1 < len(arr) and arr[right] > arr[right + 1]:right += 1max_length = max(max_length, right-left + 1)return max_length
總結(jié)
以上是生活随笔為你收集整理的16. Leetcode 845. 数组中的最长山脉 (数组-同向双指针-快慢指针)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 14. Leetcode 80. 删除有
- 下一篇: [Solved] UnicodeDeco