Leetcode 152. 乘积最大子数组 中等 动态规划
题目:
给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。
测试用例的答案是一个 32-位 整数。
子数组 是数组的连续子序列。
示例:
输入: nums = [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
思路:
维护两套动态数组,一套最大值,一套最小值,这样覆盖了负*负的情况。
初始值的话就等于原数组值。
class Solution { public: int maxProduct(vector<int>& nums) { int n=nums.size(); vector<int> dpmax(nums); vector<int> dpmin(nums); for(int i=1;i<n;++i){ dpmax[i]=max(nums[i]*dpmax[i-1], max(nums[i], nums[i]*dpmin[i-1])); dpmin[i]=min(nums[i]*dpmax[i-1], min(nums[i],nums[i]*dpmin[i-1])); } int ret=INT_MIN; for(int i=0;i<n;++i){ ret=max(ret,dpmax[i]); } return ret; } };
联系方式:emhhbmdfbGlhbmcxOTkxQDEyNi5jb20=
分类:
leetcode
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
2016-03-16 mediaplayer与surfaceView,无法播放问题