Java实现 LeetCode 152 乘积最大子序列
2023-09-14 08:58:06 时间
152. 乘积最大子序列
给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。
示例 1:
输入: [2,3,-2,4]
输出: 6
解释: 子数组 [2,3] 有最大乘积 6。
示例 2:
输入: [-2,0,-1]
输出: 0
解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。
class Solution {
public int maxProduct(int[] nums) {
int max = Integer.MIN_VALUE, imax = 1, imin = 1; //一个保存最大的,一个保存最小的。
for(int i=0; i<nums.length; i++){
if(nums[i] < 0){ int tmp = imax; imax = imin; imin = tmp;} //如果数组的数是负数,那么会导致最大的变最小的,最小的变最大的。因此交换两个的值。
imax = Math.max(imax*nums[i], nums[i]);
imin = Math.min(imin*nums[i], nums[i]);
max = Math.max(max, imax);
}
return max;
}
}
相关文章
- Java实现 LeetCode 806 写字符串需要的行数 (暴力模拟)
- Java实现 LeetCode 796 旋转字符串 (水题)
- Java实现 LeetCode 761 特殊的二进制序列(括号问题)
- Java实现 LeetCode 761 特殊的二进制序列(括号问题)
- Java实现 LeetCode 673 最长递增子序列的个数(递推)
- Java实现 LeetCode 652 寻找重复的子树(两个map的DFS)
- Java实现 LeetCode 583 两个字符串的删除操作(求最长公共子序列问题)
- Java实现 LeetCode 583 两个字符串的删除操作(求最长公共子序列问题)
- Java实现 LeetCode 522 最长特殊序列 II(查找最长的非子序列的长度)
- Java实现 LeetCode 521 最长特殊序列 Ⅰ(出题人:“就是喜欢看你们不敢相信那么简单,又不敢提交的样子。”)...
- Java实现 LeetCode 521 最长特殊序列 Ⅰ(出题人:“就是喜欢看你们不敢相信那么简单,又不敢提交的样子。”)...
- Java实现 LeetCode 513 找树左下角的值
- Java实现 LeetCode 482 密钥格式化
- Java实现 LeetCode 446 等差数列划分 II - 子序列
- Java实现 LeetCode 446 等差数列划分 II - 子序列
- Java实现 LeetCode 404 左叶子之和
- Java实现 LeetCode 376 摆动序列
- Java实现 LeetCode 5355 T 秒后青蛙的位置
- Java实现 LeetCode 334 递增的三元子序列
- Java实现 LeetCode 239 滑动窗口最大值
- Java实现 LeetCode 217 存在重复元素
- Java实现 LeetCode 187 重复的DNA序列
- Java实现 LeetCode 144 二叉树的前序遍历
- Java实现 LeetCode 105 从前序与中序遍历序列构造二叉树
- Java实现LeetCode_0014_LongestCommonPrefix