--- image: https://leetcode.com/static/images/LeetCode_Sharing.png tags: leetcode --- # Week.3.Dragon [1793. Maximum Score of a Good Subarray] --- - 給List, 數字k, 從第k位置開始找出最大值的subarray. - 最大值算法: 為subarray內最小值*array大小 --- - 起點K, 如果左邊數字大, 往左擴, 反之往右擴, 請確認是否達到邊界點 - 重要, 每次去算最小值, 如果List超大, 運算時間才不會太久. - 根據題意算出結果, 取最大值 --- ```python! class Solution: def maximumScore(self, nums: List[int], k: int) -> int: # 給List, 數字k, 從第k位置開始找出最大值的subarray. # 最大值為subarray內最小值*array大小 l, r, n = k, k, len(nums) res = mini = nums[k] while r - l + 1 != n: # 如果左邊數字大, 往左擴, 反之往右擴 # 需要額外確認是否達到邊界點 if (nums[l-1] if l else 0) > (nums[r+1] if r<n-1 else 0): l -= 1 else: r += 1 # 重要, 如果List超大, 運算時間才不會太久. mini = min(mini, nums[l], nums[r]) # 根據題意算出結果, 取最大值 res = max(res, mini*(r-l+1) ) return res ``` [1793. Maximum Score of a Good Subarray]:https://leetcode.com/problems/maximum-score-of-a-good-subarray/description/