zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    各种alloc傻傻分不清楚
    嵌入式开发一般流程
    谈谈看门狗在嵌入式中的用法
    基于开发板的二次嵌入式开发
    谈一谈接口电路
    学习ucos和ARM体系结构的路线图
    寻找链表的中位节点(利用快慢指针)
    水箱容积问题
    盛水最多的容器
    数据结构与算法分析C语言描述第二版第79页
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12773548.html
Copyright © 2011-2022 走看看