给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。

示例 1:

输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
示例 2:

输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。

思路:

标签:动态规划
遍历数组时计算当前最大值,不断更新
令max为当前最大值,则当前最大值为 max = max(max * nums[i], nums[i])
由于存在负数,那么会导致最大的变最小的,最小的变最大的。因此还需要维护当前最小值min,min = min(min * nums[i], nums[i])
当负数出现时则max与min进行交换再进行下一步计算

提交的代码:

class Solution {
    public int maxProduct(int[] nums) {
        int max=1,min=1,t,result = -2147483647>>2;
         for(int i=0;i<nums.length;i++)
         {
             if(nums[i]<0)
             {
                 t = max;
                 max = min;
                 min = t;
             }
             max = Math.max(nums[i], nums[i]*max);
             min = Math.min(nums[i], nums[i]*min);
             result = Math.max(max, result);
         }
           return result; 
    }
}

完整的代码:

public class Solution152 {
     public static int maxProduct(int[] nums) {
         int max=1,min=1,t,result = -2147483647>>2;
         for(int i=0;i<nums.length;i++)
         {
             if(nums[i]<0)
             {
                 t = max;
                 max = min;
                 min = t;
             }
             max = Math.max(nums[i], nums[i]*max);
             min = Math.min(nums[i], nums[i]*min);
             result = Math.max(max, result);
         }
           return result; 
        }
     public static void main(String[] args)
     {
         int nums[] = {-2,0,-1};
         System.out.println(maxProduct(nums));
     }
}

Leetcode--152. 乘积最大子序列相关推荐

  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. 乘积最大子序列 解题思路及C++实现

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

  4. leetcode 152 乘积最大子序列

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

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

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

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

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

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

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

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

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

  9. 152. 乘积最大子序列

    链接:https://leetcode-cn.com/problems/maximum-product-subarray/ 题解:https://leetcode-cn.com/problems/ma ...

  10. 【Leetocde | 24 】152. 乘积最大子序列

    这道题最直接的方法就是用DP来做,而且要用两个dp数组,其中f[i]表示子数组[0, i]范围内并且一定包含nums[i]数字的最大子数组乘积,g[i]表示子数组[0, i]范围内并且一定包含nums ...

最新文章

  1. android 自定义loading,Android自定义动画-StarLoadingView
  2. Java比较数量怎么比较_java - 如何在Java数量比较字符 - SO中文参考 - www.soinside.com...
  3. java元婴期(31)----java进阶(springmvc(5)---数据回显数据交互拦截器)
  4. CSS 使用@import url()与link href 的区别
  5. js中两个等号和三个等号区别?
  6. mysql innodb创建数据文件失败
  7. php读取word中的内容
  8. Java Web托管选项流程图
  9. Qt学习笔记-简单的TCP程序
  10. c# 日期转换为单词
  11. iphone降级_回顾降级系统恢复备份
  12. 超简单的HIDPI设置
  13. matlab在故障诊断中的应用,Matlab在发动机故障诊断中的应用研究
  14. tinyproxy王卡免流配置_【免流教程】王卡动态tiny免流教程
  15. 【九九乘法表】javascript做九九乘法表
  16. 2021最新外卖霸王餐小程序、H5、微信公众号版外系统源码|霸王餐美团/饿了么系统 粉丝裂变玩源码下载
  17. 2021-2027中国服务器机箱市场现状研究分析与发展前景预测报告
  18. oracle10g数据库复制,windows 下oracle 10G 数据库移植到 linux平台 (通过文件直接复制方法)...
  19. 奥塔在线:如何查看连接数?
  20. Linux中更新pycharm即删除旧的pycharm,装新的pycharm

热门文章

  1. 数据结构--堆 Heap
  2. java socket tomcat_在Tomcat环境下使用socket通信
  3. delphi64位 char数组转换string中文乱码_使用位运算、值交换等方式反转java字符串-共四种方法...
  4. 正则表达式 - 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 - Python代码
  5. android 修改系统参数设置,2021-05-15 [RK3399][Android7.1] 调试笔记 ---显示参数动态设置接口...
  6. python 列表写入csv_Python将字典数据写入CSV文件
  7. 知识图谱入门视频(一)
  8. 论文浅尝 | 用于视觉推理的显式知识集成
  9. 打造工业级推荐系统(三):推荐系统的工程实现与架构优化
  10. day45-前端CSS