Leetcode練習(Python):數組類:第152題:給你一個整數數組 nums ,請你找出數組中乘積最大的連續子數組(該子數組中至少包含一個數字)。


題目:
給你一個整數數組 nums ,請你找出數組中乘積最大的連續子數組(該子數組中至少包含一個數字)。
思路:
考慮數組中為負數的情況。
程序:
class Solution:
    def maxProduct(self, nums: List[int]) -> int:
        length = len(nums)
        if length <= 0:
            return 0
        if length == 1:
            return nums[0]
        result = nums[0]
        auxiliary_max = [0] * length
        auxiliary_min = [0] * length
        auxiliary_max[0] = nums[0]
        auxiliary_min[0] = nums[0]
        for index in range(1, length):
            if nums[index] >= 0:
                auxiliary_max[index] = max(auxiliary_max[index - 1] * nums[index], nums[index])
                auxiliary_min[index] = min(auxiliary_min[index - 1] * nums[index], nums[index])
            else:
                auxiliary_max[index] = max(auxiliary_min[index - 1] * nums[index], nums[index])
                auxiliary_min[index] = min(auxiliary_max[index - 1] * nums[index], nums[index])
            result = max(result, auxiliary_max[index])
        return result


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 Leetcode練習(Python):數組類:第209題:給定一個含有 n 個正整數的數組和一個正整數 s ,找出該數組中滿足其和 ≥ s 的長度最小的連續子數組。如果不存在符合條件的連續子數組,返回 0。 找出一個整數數組的和最大的連續子數組 刷題之給定一個整數數組 nums 和一個目標值 taget,請你在該數組中找出和為目標值的那 兩個 整數 給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target  的那 兩個 整數,並返回它們的數組下標。 Leetcode練習(Python):數組類:第78題:給定一組不含重復元素的整數數組 nums,返回該數組所有可能的子集(冪集)。 說明:解集不能包含重復的子集。 php 獲取兩個給定一個整數數組 nums 和一個目標值 target,請你在該數組中找出和為目標值的那 兩個 整數,並返回他們的數組下標。 41.給你一個未排序的整數數組,請你找出其中沒有出現的最小的正整數。 Leetcode練習(Python):數組類:第85題:給定一個僅包含 0 和 1 的二維二進制矩陣,找出只包含 1 的最大矩形,並返回其面積。 算法題一(給定一個整數數組和一個目標值,請你在該數組中找出和為目標值的那兩個整數的索引) Leetcode練習(Python):數組類:第45題:給定一個非負整數數組,你最初位於數組的第一個位置。 數組中的每個元素代表你在該位置可以跳躍的最大長度。 你的目標是使用最少的跳躍次數到達數組的最后一個位置。
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM