702724. Minimum value product

Easy

Minimum Value Product1814

Summary

The Minimum Value Product problem is an array-based algorithmic challenge that requires you to find the product of minimum values in all subarrays. This problem involves mathematical concepts and data structures, making it a great exercise for beginners looking to improve their coding skills.

Detailed Explanation

Problem Statement

Given an array arr of integers, your task is to find the product of the minimum values in all subarrays. For example, if the input array is [1, 2, 3, 4, 5], the output should be (min(1) * min(1, 2)) * (min(1, 2, 3)) * ... = 1 * 1 * 1 * 1 * 1 = 1.

Algorithmic Approach

To solve this problem, we'll use a simple iterative approach. We initialize an array dp of the same size as the input array, where dp[i] represents the product of minimum values in all subarrays ending at index i. Then, we iterate through the array and update each dp[i] value based on the previous minimum value and the current element.

Here's a step-by-step breakdown:

  1. Initialize an array dp with the same size as the input array.
  2. For each element arr[i], calculate the product of minimum values in all subarrays ending at index i. This is done by multiplying the previous minimum value (dp[i-1]) with the current element (arr[i]) and updating dp[i] accordingly.
  3. The final answer is the product of all dp values.

Time and Space Complexity

The time complexity of this algorithm is O(n), where n is the size of the input array, since we only need to iterate through the array once. The space complexity is also O(n) due to the extra dp array used during computation.

Here's an ASCII art diagram illustrating the problem:

 arr = [1, 2, 3, 4, 5]
 dp = [1, 1, 2, 6, 60]

Optimized Solutions

Java

View on GeeksforGeeks
public class MinimumValueProduct {
    public static int findMinimumValueProduct(int[] arr) {
        int n = arr.length;
        int[] dp = new int[n];
        dp[0] = arr[0];
        for (int i = 1; i < n; i++) {
            dp[i] = Math.min(arr[i], dp[i-1]) * arr[i];
        }
        int result = 1;
        for (int val : dp) {
            result *= val;
        }
        return result;
    }
}

DevExCode

Master coding interviews with Leetcode, system design, TechBit, QuickLearn, DevTips, Tech Battles, and career services.

© 2026 DevExCode. All rights reserved.