lintcode--乘积最大子序列
来源:互联网 发布:nba战报今日战报数据 编辑:程序博客网 时间:2024/06/09 16:01
题目描述:
找出一个序列中乘积最大的连续子序列(至少包含一个数)。
样例
比如, 序列 [2,3,-2,4] 中乘积最大的子序列为 [2,3] ,其乘积为6。
思路分析:
看到这道题,想起的第一是求最大子序列和的那道题的方法,保存最大值,每次与当前的数相乘,然后把比较是不是最大值,如果是则将其保存,但是转念一想,当数列中有偶数个数的负数时,我们会漏掉这种情况。所以新的方法是保存最大值和最小值,这样当我们遇到负数时,就可以对其进行处理,但是经过测试会发现还是不可以,因为我们还要将原本的数加入与最大值,最小值乘积的比较,这样才可以。
其总结公式就是:
代码实现:
class Solution {public: /* * @param nums: An array of integers * @return: An integer */ int maxProduct(vector<int> &nums) { // write your code here int max=nums[0]; int min=nums[0]; int realmax=nums[0]; for(int i=1;i<nums.size();i++) { int tempmax=max; int tempmin=min; max=findmax(nums[i],nums[i]*tempmax,nums[i]*tempmin); min=findmin(nums[i],nums[i]*tempmax,nums[i]*tempmin); if(max>realmax) { realmax=max; } } return realmax; } int findmax(int a,int b,int c) { return c>((a>b)?a:b)?c:((a>b)?a:b); } int findmin(int a,int b,int c) { return c>((a>b)?b:a)?((a>b)?b:a):c; }};
阅读全文
0 0
- LintCode-乘积最大子序列
- LintCode -- 乘积最大子序列
- lintcode- 乘积最大子序列
- LintCode:乘积最大子序列
- 乘积最大子序列,lintcode
- lintcode--乘积最大子序列
- Lintcode 乘积最大子序列
- 乘积最大子序列-LintCode
- lintcode--乘积最大子序列
- lintCode【91】乘积最大子序列
- LintCode:M-乘积最大子序列
- [Lintcode]Maximum Product Subarray乘积最大子序列
- lintcode刷题——乘积最大子序列
- 最大乘积子序列
- 最大子序列乘积
- 乘积最大子序列
- 乘积最大子序列
- 乘积最大子序列
- 【Python】2.1温度转换
- Read-only file system
- Spring中的@Transactional放在 类级别 和 方法级别 上有什么不同?
- Android直播实践
- Vision_MATH_逆元
- lintcode--乘积最大子序列
- 卡片左右滑,类似探探效果。目前花椒也引用此效果方式
- 程序设计C 实验四 题目四 求组合数(0082)
- Win10系统环境下caffe的Python接口Anaconda2配置
- 数据库sql优化
- 如何在Java中使用双重检查锁实现单例
- 使用eclipse和maven生成java web程序war包
- python核心编程读书笔记--第4章 对象
- 父布局与子布局控件的实现响应点击事件冲突问题。