Leetcode--152. 乘积最大子序列
给定一个整数数组 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. 乘积最大子序列相关推荐
- Java实现 LeetCode 152 乘积最大子序列
152. 乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] ...
- LeetCode 152. 乘积最大子序列(DP)
文章目录 1. 题目信息 2. 解题 1. 题目信息 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1:输入: [2,3,-2,4] 输出: 6 解 ...
- Leetcode 152. 乘积最大子序列 解题思路及C++实现
解题思路: 求乘积最大的子序列,不同于和最大的子序列,两个负数相乘是会得到正数的,所以在遍历数组nums时,需要存储最大和最小的子序列乘积.然后每遍历一个元素,更新一次. class Solution ...
- leetcode 152 乘积最大子序列
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. 示例 2 ...
- LeetCode 152. 乘积最大子序列(动态规划)
题目描述 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. ...
- leetcode - 53. 最大子序和 152. 乘积最大子序列 - 两个算法之间的联系和区别
这两道算法题的解题思路是差不多的,但是从整体上分析,乘积最大子序列之和是最大子序和的进阶.先来看看两道算法题的简单描述. 53.最大子序和 给定一个整数数组 nums ,找到一个具有最大和的连续子数组 ...
- leetcode 算法-乘积最大子序列-152
leetcode 算法-乘积最大子序列 leetcode 传送门 题目 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2, ...
- Leetcode 152.乘机最大子序列
乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 ...
- 152. 乘积最大子序列
链接:https://leetcode-cn.com/problems/maximum-product-subarray/ 题解:https://leetcode-cn.com/problems/ma ...
- 【Leetocde | 24 】152. 乘积最大子序列
这道题最直接的方法就是用DP来做,而且要用两个dp数组,其中f[i]表示子数组[0, i]范围内并且一定包含nums[i]数字的最大子数组乘积,g[i]表示子数组[0, i]范围内并且一定包含nums ...
最新文章
- android 自定义loading,Android自定义动画-StarLoadingView
- Java比较数量怎么比较_java - 如何在Java数量比较字符 - SO中文参考 - www.soinside.com...
- java元婴期(31)----java进阶(springmvc(5)---数据回显数据交互拦截器)
- CSS 使用@import url()与link href 的区别
- js中两个等号和三个等号区别?
- mysql innodb创建数据文件失败
- php读取word中的内容
- Java Web托管选项流程图
- Qt学习笔记-简单的TCP程序
- c# 日期转换为单词
- iphone降级_回顾降级系统恢复备份
- 超简单的HIDPI设置
- matlab在故障诊断中的应用,Matlab在发动机故障诊断中的应用研究
- tinyproxy王卡免流配置_【免流教程】王卡动态tiny免流教程
- 【九九乘法表】javascript做九九乘法表
- 2021最新外卖霸王餐小程序、H5、微信公众号版外系统源码|霸王餐美团/饿了么系统 粉丝裂变玩源码下载
- 2021-2027中国服务器机箱市场现状研究分析与发展前景预测报告
- oracle10g数据库复制,windows 下oracle 10G 数据库移植到 linux平台 (通过文件直接复制方法)...
- 奥塔在线:如何查看连接数?
- Linux中更新pycharm即删除旧的pycharm,装新的pycharm
热门文章
- 数据结构--堆 Heap
- java socket tomcat_在Tomcat环境下使用socket通信
- delphi64位 char数组转换string中文乱码_使用位运算、值交换等方式反转java字符串-共四种方法...
- 正则表达式 - 去掉乱码字符/提取字符串中的中文字符/提取字符串中的大小写字母 - Python代码
- android 修改系统参数设置,2021-05-15 [RK3399][Android7.1] 调试笔记 ---显示参数动态设置接口...
- python 列表写入csv_Python将字典数据写入CSV文件
- 知识图谱入门视频(一)
- 论文浅尝 | 用于视觉推理的显式知识集成
- 打造工业级推荐系统(三):推荐系统的工程实现与架构优化
- day45-前端CSS