leetcode 152. 乘积最大子序列 java
题目:
给定一个整数数组 nums
,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
示例 1:
输入: [2,3,-2,4]
输出:6
解释: 子数组 [2,3] 有最大乘积 6。
示例 2:
输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
解题答案:
max:当前乘积最大值
zheng:当前连续的乘积和(大于等于0)
fu:当前连续的乘积和(大于等于0)
分别判断nums[i]为正数,负数以及0的情况下:max,zheng,fu变量的变化
class Solution {
public int maxProduct(int[] nums) {
if(nums.length < 1)
return 0;
if(nums.length == 1)
return nums[0];
int zheng = 0; //当前连续的最大值 正数
int fu = 0; //当前连续的最小值 负数
int max = nums[0];
if(nums[0] > 0)
zheng = nums[0];
if(nums[0] < 0)
fu = nums[0]; for(int i = 1; i < nums.length; i++)
{
if(nums[i] > 0)
{
if(zheng > 0)
{
zheng = zheng * nums[i];
}
else
zheng = nums[i];
if(zheng > max)
max = zheng;
if(fu < 0)
{
fu = fu * nums[i];
}
}
else if(nums[i] == 0)
{
zheng = 0;
fu = 0;
if(0 > max)
max = 0;
}
else{
//nums[i]为负数 则fu zheng要进行相应的变化
int temp = zheng;
if(fu < 0)
{
zheng = fu * nums[i];
if(zheng > max)
max = zheng;
}
else
{
zheng = 0;
}
if(temp > 0)
{
fu = temp * nums[i];
}
else{
fu = nums[i];
} }
}
return max;
}
}
leetcode 152. 乘积最大子序列 java的更多相关文章
- Java实现 LeetCode 152 乘积最大子序列
152. 乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] ...
- [LeetCode]152. 乘积最大子序列(DP)
题目 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. 示 ...
- LeetCode | 152. 乘积最大子序列
原题(Medium): 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 思路: 遍历数组时且逐元素相乘时,如果遇到了0,在求乘积最大值的情况下,0左边的元素 ...
- LeetCode 152. 乘积最大子序列(Maximum Product Subarray)
题目描述 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6. ...
- Leetcode 152.乘机最大子序列
乘积最大子序列 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 ...
- Leetcode题目152.乘积最大子序列(动态规划-中等)
题目描述: 给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数). 示例 1: 输入: [2,3,-2,4] 输出: 6 解释: 子数组 [2,3] 有最大乘积 6 ...
- leetcode 152. Maximum Product Subarray --------- java
Find the contiguous subarray within an array (containing at least one number) which has the largest ...
- 152 Maximum Product Subarray 乘积最大子序列
找出一个序列中乘积最大的连续子序列(该序列至少包含一个数).例如, 给定序列 [2,3,-2,4],其中乘积最大的子序列为 [2,3] 其乘积为 6.详见:https://leetcode.com/p ...
- 1. 线性DP 152. 乘积最大子数组
152. 乘积最大子数组 https://leetcode-cn.com/problems/maximum-product-subarray/ func maxProduct(nums []int) ...
随机推荐
- 用EventLog Analyzer的预定义报表和告警来进行Syslog管理
用EventLog Analyzer的预定义报表和告警来进行Syslog管理 系统日志(Syslog)管理是几乎所有企业的重要需求.系统管理员将syslog看作是解决网络上系统日志支持的系统和设备性能 ...
- HTML-入门篇day01
HTML-入门篇day01 1.web C/S:Client Server 客户端 服务器 QQ,... B/S:Browser Server 浏览器 服务器 PC机: ...
- Livelock
Unlike deadlock, livelocked packets continue to move through the network, but never reach their dest ...
- php 安装扩展
安装mysqli扩展 1.到php文件ext下的mysqli cd /usr/local/php-7.1.5/ext/mysqli 2.在mysqli文件夹下执行 /usr/local/ph ...
- Silverlight样式定义
方法一.定义在控件内部 <Canvas Background="Red" Height="100" HorizontalAlignment="L ...
- 自己写一个chrome扩展程序 - 右键菜单扩展
最近在学习Spring,心想dotnet如何实现类似形式呢.于是想认真学习Casetle组件,发现没有书籍!而spring的书多得很.于是只好找网上教程了.发现系统的文章不多.Terrylee好多文章 ...
- 恢复VS2010/VS2013项目为VS2008项目
https://blogs.msdn.microsoft.com/rextang/2009/07/06/convert-vs2010-projects-back-to-vs2008-ones/ 摘抄如 ...
- (转) HighCharts 非规律日期 多条曲线的 绘画
转自:http://blog.csdn.net/z69183787/article/details/8651296 项目中需要为A,B 2个元素 绘出统计值的曲线,但A与B 的 时间点 并不一致,查找 ...
- War Chess (hdu 3345)
http://acm.hdu.edu.cn/showproblem.php?pid=3345 Problem Description War chess is hh's favorite game:I ...
- 去除html页面中GET《 http://localhost:8080/favicon.ico 404 (Not Found)》
html5页面中经常会遇见以下问题,总是看着碍眼,那么怎么解决呢? GET http://localhost:8080/favicon.ico 404 (Not Found) 解决的方法: <l ...