`
hcx2013
  • 浏览: 88865 次
社区版块
存档分类
最新评论

子数组最大乘积

 
阅读更多

给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积。例如arr=[-2.5,4,0,3,0.5,8,-1],子数组[3,0.5,8]累乘可以获得最大的乘积12,所以返回12。

 

public class Solution {
    public double maxProduct(double[] arr) {
    	if (arr==null || arr.length==0) {  
            return 0;  
        } 
    	double max = arr[0];
    	double min = arr[0];
    	double res = arr[0];
    	double tmp1 = 0;
    	double tmp2 = 0;
    	for (int i = 1; i < arr.length; i++) {
			tmp1 = max * arr[i];
			tmp2 = min * arr[i];
			max = Math.max(Math.max(tmp1, tmp2), arr[i]);
			min = Math.min(Math.min(tmp1, tmp2), arr[i]);
			res = Math.max(max, res);
		}
    	return res;
    }
}

 

分享到:
评论

相关推荐

    算法 子数组最大乘积

    ### 算法知识点:子数组最大乘积 #### 问题背景及定义 在计算机科学领域,特别是算法设计中,“子数组最大乘积”问题是一个经典的动态规划问题。该问题通常表述为:给定一个长度为`N`的整数数组,如何找到一个长度...

    最大子数组乘积

    对于最大子数组乘积问题,我们可以定义两个状态变量,一个是当前子数组的最大乘积(max_product),另一个是最小乘积(min_product)。最小乘积在这里的作用是处理负数的情况,因为负数乘以最大乘积可能会变成新的...

    乘积最大子数组(动态规划)1

    问题要求在给定的整数数组 `nums` 中找出乘积最大的连续子数组,并返回这个子数组的最大乘积。动态规划是一种解决复杂问题的有效方法,通过将大问题分解成小问题,然后逐步构建解决方案。 首先,我们要明确动态规划...

    子数组的最大乘积(微软)

    ### 子数组的最大乘积(微软) #### 问题描述 给定一个长度为 \( N \) 的整数数组,目标是找到该数组中任意 \( (N-1) \) 个数的组合乘积中最大的一组。在此过程中,只允许使用乘法操作,不允许使用除法操作。 ####...

    DP-LeetCode152. 乘积最大子数组(Python)

    这种方法通过维护两个变量`curMax`和`curMin`来分别跟踪当前子数组的最大乘积和最小乘积。在遍历过程中,每次遇到新的元素`num`,我们都更新`curMax`和`curMin`,并且根据乘积的大小关系重新确定它们的值。同样地,`...

    Java-Leetcode-乘积最大子数组.zip

    首先初始化两个变量,一个是当前子数组的最大乘积`maxProduct`,另一个是最小乘积`minProduct`,因为负数乘以负数会变成正数,所以最小乘积在遇到负数时可能会变成最大乘积。遍历整个数组,对于每个元素,我们更新这...

    乘积最大子数组(java代码).docx

    ### 乘积最大子数组问题解析 #### 一、问题背景与定义 在处理一系列数值时,经常会遇到求解特定子序列(或子数组)的问题。对于“乘积最大子数组”这一问题,其核心是寻找一个连续子数组,使得该子数组中所有元素...

    python-leetcode面试题解之第152题乘积最大子数组-题解.zip

    给定一个整数数组nums,你的任务是找到具有最大乘积的子数组(连续的子数组),并返回这个最大乘积。 例如: 输入:nums = [-2, 0, -1, 3, 1, -3, 2] 输出:6 解释:子数组[-2, 3, 1]有最大的乘积6。 这个题目涉及...

    乘积最大子数组.md

    乘积最大子数组.md

    javascript-leetcode面试题解动态规划问题之第152题乘积最大子数组-题解.zip

    对于这个问题,我们可以维护两个变量,一个用于跟踪当前子数组的最大乘积,另一个用于跟踪最小乘积。这是因为负数乘以当前的最大乘积可能会变成新的最大乘积,而负数乘以最小乘积则可能变成新的最小乘积。 以下是...

    【华为OD机试真题2023JAVA&JS】几何平均值最大子数组

    在本题中,我们需要遍历数组,维护一个当前子数组的几何平均值,并与已知的最大几何平均值进行比较,同时记录下最大几何平均值对应的子数组信息。 **解题策略** 1. 初始化最大几何平均值`max`为负无穷,用于存储...

    C语言-leetcode题解之第152题乘积最大子数组.zip

    c语言 C语言_leetcode题解之第152题乘积最大子数组

    连续子序列最大和与乘积问题的分析

    连续子序列最大和问题(也称为“最大子数组和问题”)的目标是找到一个数组中的连续子数组,使得其和最大。最著名的解法是 Kadane's Algorithm。该算法以O(n)的时间复杂度完成,遍历一次数组,同时记录当前子数组的...

    Shatteredxu#javaKI#2021-04-09__乘积最大子数组__有效数独1

    152. 乘积最大子数组public int maxProduct(int[] nums) {//也可以用数组代替//下面mx会改变所以需要先存储起来;//三种

    Leetcode最大乘积和19.10.3_leetcode_C++_

    描述中的“找出数组中连续相乘后能得出最大乘积的一组数字,算法十分精妙”揭示了我们需要解决的核心问题:在给定的整数数组中找到一个子数组,使得这些元素相乘得到的最大乘积。 这个问题属于数组和动态规划的范畴...

    算法-最大K乘积问题

    这样,在处理每个新元素时,我们可以比较并更新这两个堆,确保始终得到前k个最大乘积。 算法设计步骤如下: 1. 初始化两个大小为k的最小堆,一个用于正数,一个用于负数。 2. 遍历输入数组nums,对于每个元素: -...

    蓝桥杯c++-蓝桥杯竞赛练习之算法提高题最大乘积.zip

    描述中提到的“蓝桥杯c++_蓝桥杯竞赛练习之算法提高题最大乘积”进一步确认了这是一个与蓝桥杯竞赛相关的C++编程练习,特别关注算法的提升和优化,目标是解决找到数组中连续子数组的最大乘积的问题。这个问题在实际...

    php-leetcode题解之乘积最大子序列.zip

    在这个问题中,目标是找出数组中的一个连续子数组,使得其乘积最大。 首先,我们要了解这个问题的基本定义。假设有一个整数数组`$nums`,我们需要找到其中的一个子数组,通过计算这个子数组所有元素的乘积,得到的...

    乘积最大的拆分.zip

    在这个问题中,我们可以定义一个数组dp,其中dp[i]表示数组前i个元素的最大乘积。初始化dp[0] = nums[0](假设nums是输入的数字数组),然后对于每个后续的元素,我们可以选择包括它或不包括它在子序列中,更新dp[i]...

Global site tag (gtag.js) - Google Analytics