LeetCode 152. Maximum Product Subarray
来源:互联网 发布:zepto.js左右滑动事件 编辑:程序博客网 时间:2024/06/18 13:07
必须要考虑到的情况: 负数,零。 两种方法:
方法一: 保留最大值,最小值。当负数存在时,交换最大最小值。用了swap函数,很巧妙。
class Solution {
public:
int maxProduct(vector<int>& nums) {
int product = nums[0], val_max=r, val_min=r;
for(int i=1; i<nums.size();i++)
{
if(nums[i] < 0) swap(val_max, val_min);
val_max = max(nums[i], nums[i]*val_max);
val_min = min(nums[i], nums[i]*val_min);
r = max(r, val_max);
}
return r;
}
};
方法二:相当于分别从数组 “头” 、“尾” 出发,依次遍历数组中的各元素,并取乘机最大值。
class Solution {
public:
int maxProduct(vector<int>& nums) {
int res=INT_MIN, front=1, back=1;
for(int i=0; i<nums.size(); i++)
{
res = max(res, max(front*=nums[i], back*=nums[nums.size()-1-i]));
if(front==0) front=1;
if(back==0) back=1;
}
return res;
}
};
小结: 灵活运用max函数,可省去很多麻烦;考虑程序在不同适用条件下的可行性。
阅读全文
0 0
- LeetCode 152. Maximum Product Subarray
- [leetcode] 152.Maximum Product Subarray
- [LeetCode]152. Maximum Product Subarray
- leetcode:152. Maximum Product Subarray
- leetcode 152. Maximum Product Subarray
- 152. Maximum Product Subarray LeetCode
- [leetcode] 152. Maximum Product Subarray
- LeetCode *** 152. Maximum Product Subarray
- LeetCode 152. Maximum Product Subarray
- leetcode.152. Maximum Product Subarray
- LeetCode-152.Maximum Product Subarray
- LeetCode - 152. Maximum Product Subarray
- [Leetcode]152. Maximum Product Subarray
- LeetCode 152. Maximum Product Subarray
- leetcode:152. Maximum Product Subarray
- [leetcode]152. Maximum Product Subarray
- LeetCode 152. Maximum Product Subarray
- [LeetCode] 152. Maximum Product Subarray
- 收集安卓开发干货
- 排序算法汇总
- 最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等
- Macbook Pro上运行windows to go
- Tomcat中文乱码
- LeetCode 152. Maximum Product Subarray
- Python读取大容量的csv文件
- 超越局域网,免费多平台的文件分享利器:SendAnywhere
- 8种页面布局
- Mybatis generator中xml配置说明
- 使用tensorflow利用神经网络分类识别MNIST手写数字数据集
- shell文件对比
- ApplicationContextAware和ClassPathXmlApplicationContext(Spring定时任务运行多次问题)
- 原型