算法设计与应用基础:第十二周(2)
来源:互联网 发布:cf手游尼泊尔战龙 数据 编辑:程序博客网 时间:2024/05/21 15:25
152. Maximum Product Subarray
DescriptionHintsSubmissionsSolutions
- Total Accepted: 96023
- Total Submissions: 381825
- Difficulty: Medium
- Contributor: LeetCode
Find the contiguous subarray within an array (containing at least one number) which has the largest product.
For example, given the array [2,3,-2,4]
,
the contiguous subarray [2,3]
has the largest product = 6
.
Subscribe to see which companies asked this question.
解题思路:通过多次做题不难得出该问题的状态转移方程A[i]=A[i-1]*nums[i](A[i]表示包含nums[i]的最大子乘积序列,但是这道题特殊的地方在于它是乘积,也就是说不一定满足以上状态转移方程,分类讨论应该为A[i]=A[i-1]*nums[i](A[i]为正数时);A[i]=B[i-1]*nums[i](A[i]为负数时,B[i]表示包含nums[i]的最小子乘积序列。这样解题就明了了,代码如下:
int maxProduct(vector<int>& nums) { if(nums.empty()) return 0; else { int now_max=nums[0],now_min=nums[0],biggest=nums[0]; for(int i=1;i<nums.size();i++) { int temp1=now_min*nums[i],temp2=now_max*nums[i]; if(nums[i]<0) { now_max=max(now_min*nums[i],nums[i]); now_min=min(temp2,nums[i]); } else { now_max=max(now_max*nums[i],nums[i]); now_min=min(now_min*nums[i],nums[i]); } biggest=max(biggest,now_max); } return biggest; }}说明:针对方程特性进行了空间复杂度的优化,使得空间复杂度为O(1);
0 0
- 算法设计与应用基础:第十二周(2)
- 算法设计与应用基础-第十二周
- 算法设计与应用基础:第十二周
- 算法设计与应用基础:第十二周(1)
- 算法设计与结构基础作业第十二周
- 算法设计与应用基础:第二周(2)
- 算法设计与应用基础: 第三周(2)
- 算法设计与应用基础: 第五周(2)
- 算法设计与应用基础: 第六周(2)
- 算法设计与应用基础:第十周(2)
- 算法设计与应用基础:第十三周(2)
- 算法设计与应用基础:第十五周(2)
- 算法设计与应用基础:第十七周(2)
- 算法设计与应用基础-第二周
- 算法设计与应用基础:第三周
- 算法设计与应用基础-第三周
- 算法设计与应用基础-第五周
- 算法设计与应用基础:第五周
- Deep learn toolbox:CNN BP求导解析
- 数字1的数量
- Platform Devices and Drivers(NET)
- 小白题解 Codeforces 794A Bank Robbery
- 欢迎使用CSDN-markdown编辑器
- 算法设计与应用基础:第十二周(2)
- C# WinForm 自绘TreeView
- 小知识点
- Java裸体小白的多态
- 英飞凌磁传感器 TLE5012b STM32F103 SPI 程序说明
- Servlet 点击计数器
- git仓库迁移
- 算法题——Maximum Gap(JAVA)基数排序
- 模拟实现myshell