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。 Leetcode练习(Python):数组类:第53题:给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。进阶: 如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。 Leetcode练习(Python):数组类:第15题:给你一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?请你找出所有满足条件且不重复的三元组。 注意:答案中不可以包含重复的三元组。 刷题:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。 Leetcode练习(Python):数组类:第41题:给你一个未排序的整数数组,请你找出其中没有出现的最小的正整数。你的算法的时间复杂度应为O(n),并且只能使用常数级别的额外空间。 刷题之给定一个整数数组 nums 和一个目标值 taget,请你在该数组中找出和为目标值的那 两个 整数 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target  的那 两个 整数,并返回它们的数组下标。 Leetcode练习(Python):数组类:第128题:给定一个未排序的整数数组,找出最长连续序列的长度。 要求算法的时间复杂度为 O(n)。 给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM