LeetCode热题100(乘积最大子序列)

给你一个整数数组 nums ,请你找出数组中乘积最大的非空连续 子数组(该子数组中至少包含一个数字),并返回该子数组所对应的乘积。

测试用例的答案是一个 32-位 整数。

请注意,一个只包含一个元素的数组的乘积是这个元素的值。

代码:

java 复制代码
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;
    }
}

题解思路:

使用两个变量记录当前变量的最大值和最小值,当出现负数时两个值进行互换。

相关推荐
AGV算法笔记14 分钟前
CVPR 2025 最新感知算法解读:GaussianLSS 如何用 Gaussian Splatting 重构 BEV 表示?
算法·重构·自动驾驶·3d视觉·感知算法·多视角视觉
勤劳的进取家1 小时前
数据链路层基础
网络·学习·算法
Advancer-1 小时前
第二次蓝桥杯总结(上)
java·算法·职场和发展·蓝桥杯
ん贤2 小时前
加密算法(对称、非对称、哈希、签名...)
算法·哈希算法
superior tigre2 小时前
78 子集
算法·leetcode·深度优先·回溯
天威?*2 小时前
bitset的数据结构用法
算法·动态规划
hoiii1873 小时前
粒子滤波跟踪系统 - 蒙特卡洛方法实现
算法
weisian1514 小时前
Java并发编程--47-分布式ID生成器:雪花算法(Snowflake)与时钟回拨问题
java·算法·时钟回拨·雪花算法id
itzixiao4 小时前
L1-066 猫是液体(5分)[java][python]
java·开发语言·python·算法
ytttr8734 小时前
MATLAB SIFT图像配准实现
算法·机器学习·matlab