解题思路:

求乘积最大的子序列,不同于和最大的子序列,两个负数相乘是会得到正数的,所以在遍历数组nums时,需要存储最大和最小的子序列乘积。然后每遍历一个元素,更新一次。

class Solution {
public:int maxProduct(vector<int>& nums) {if(nums.empty()) return 0;int n = nums.size();int imax = nums[0];  //存储当前最大值int imin = nums[0];  //存储当前最小值int res = nums[0];   //存储结果for(int i = 1; i < n; i++){int tmp = imax;  //要先把imax缓存起来,不然就会被下面的赋值语句更新掉imax = max(nums[i], max(nums[i]*imax, nums[i]*imin));imin = min(nums[i], min(nums[i]*tmp, nums[i]*imin));res = max(res, imax);}return res;}
};

Leetcode 152. 乘积最大子序列 解题思路及C++实现相关推荐

  1. Java实现 LeetCode 152 乘积最大子序列

    152. 乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] ...

  2. LeetCode 152. 乘积最大子序列(DP)

    文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1:输入: [2,3,-2,4] 输出: 6 解 ...

  3. leetcode 152 乘积最大子序列

    给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. 示例 2 ...

  4. LeetCode 152. 乘积最大子序列(动态规划)

    题目描述 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. ...

  5. leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别

    这两道算法题的解题思路是差不多的,但是从整体上分析,乘积最大子序列之和是最大子序和的进阶.先来看看两道算法题的简单描述. 53.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 ...

  6. leetcode 算法-乘积最大子序列-152

    leetcode 算法-乘积最大子序列 leetcode 传送门 题目 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2, ...

  7. Leetcode 392. 判断子序列 解题思路及C++实现

    解题思路: 使用贪心算法,每在字符串t中找到s的相应顺序的一个字符,就当做找到了该字符,然后接着去找后面的字符. 程序大循环:在字符串 t 中去寻找字符串 s 的第一个字符. 每当找到 s 的起始字符 ...

  8. Leetcode 152.乘机最大子序列

    乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 ...

  9. Leetcode 313. 超级丑数 解题思路及C++实现

    解题思路: 与Leetcode 264. 丑数 II的解题思路一样,均使用最小堆来存储丑数,第i次更新最小堆时,得到第i大的丑数. 可结合Leetcode 264. 丑数 II的解题思路理解:http ...

最新文章

  1. SpringBoot注入数据的方式
  2. K近邻算法(KNN)原理小结
  3. 从五个方面做IT职业规划
  4. java String 转boolean
  5. QT的QMutex类的使用
  6. 在 IE8 下 EXT的显示问题
  7. 酒店前厅计算机的作用,浅谈智能化对酒店前厅员工的服务质量和影响
  8. SpringAOP之代理设计模式
  9. 选择安防交换机时需要避免哪些误区呢?
  10. Android极光推送,Manifest merger failed with multiple errors, see logs
  11. JavaScript | 用户定义函数的一些示例
  12. terminated 线程_深入并发,线程相关知识全解析
  13. Redis和MySQL的结合方案
  14. JavaScript 闭包理解
  15. 玩游戏提示计算机内存不足,Win10玩吃鸡游戏提示“虚拟内存不足”怎么办?
  16. lopa分析_AQ/T 3054-2015保护层分析(LOPA)方法应用导则
  17. 泰坦尼克号 机器学习_机器学习项目泰坦尼克号问题陈述
  18. c# 调用restful json_SSM实现RESTFul风格的CURD操作
  19. Vue实现图形化积木式编程(一)
  20. android+6.0+通讯录,Android6.0的通讯录获取

热门文章

  1. 声音对比处理_厨房垃圾处理器 | 厨余垃圾分类的正确打开姿势
  2. Windows远程桌面管理--功能强大的远程批量管理工具
  3. Win服务器2008和2012哪个更好?
  4. data.push({name:'a',value:'a'});
  5. flask 渲染jinja2模版和传参
  6. 解决Ubuntu Adobe Reader 菜单栏空白
  7. AndroidVerifyBoot
  8. android 六边形简书,深入理解六边形架构
  9. JVM — 类加载机制
  10. 10分钟理解CSS3 FlexBox