华为题目152乘积最大子数组

关于这个题目我刚开始想用求最大求和的方法,也就是数组左右两个指针的移动的方式,就是以右边指针为导向把左边的指针一直往右边去移动,因为不会出现反转。这个就是乘积的会反转所以必须用新的方法。

复制代码
def maxProduct(self, nums):
    #首先要有判断是不是空
#这个要用if not nums,这个都可以判断,。因为如果if num is None无法判断[]这种情况
    if nums is None:
        return 0
    ans,da,xiao=nums[0],nums[0],nums[0]

    for i in range(1,len(nums)):
        num=nums[i]
        cun=da
#这里把da存cun了,因为后面xiao的时候要用到cun
        da=max(num,cun*num,xiao*num)
        xiao=min(num,cun*num,xiao*num)
        ans=max(ans,da)
    return ans
相关推荐
Yeats_Liao2 小时前
华为开源自研AI框架昇思MindSpore应用案例:WaveNet实现音乐生成
人工智能·深度学习·算法·机器学习·边缘计算
_饭团2 小时前
C 语言数据存储全解析:原反补码、大小端与 IEEE 754 浮点数
c语言·数据结构·算法·leetcode·面试·蓝桥杯·学习方法
2401_873204652 小时前
C++与Docker集成开发
开发语言·c++·算法
j_xxx404_2 小时前
力扣--分治(归并排序)算法题II:计算右侧小于当前元素的个数,翻转对(无痛通关困难题)
开发语言·数据结构·c++·算法·leetcode
setmoon2142 小时前
多协议网络库设计
开发语言·c++·算法
Sylvia-girl2 小时前
删除有序数组中的重复项
数据结构·算法
2501_908329852 小时前
嵌入式LinuxC++开发
开发语言·c++·算法
Storynone2 小时前
【Day30】卡码网:46. 携带研究材料,LeetCode:416. 分割等和子集
python·算法·leetcode
少许极端2 小时前
算法奇妙屋(三十四)-贪心算法学习之路 1
学习·算法·贪心算法