1793. Maximum Score of a Good Subarray (Hard) - TengnanYao/daily_leetcode GitHub Wiki
class Solution(object):
def maximumScore(self, nums, k):
"""
:type nums: List[int]
:type k: int
:rtype: int
"""
n = len(nums)
result = m = nums[k]
i = j = k
while i > 0 or j < n - 1:
if i == 0:
while j < n:
m = min(m, nums[j])
result = max(result, m * (j - i + 1))
j += 1
break
if j == n - 1:
while i >= 0:
m = min(m, nums[i])
result = max(result, m * (j - i + 1))
i -= 1
break
if nums[i - 1] < nums[j + 1]:
j += 1
m = min(m, nums[j])
else:
i -= 1
m = min(m, nums[i])
result = max(result, m * (j - i + 1))
return result