DDSA
Advertisement

3010. Divide an Array Into Subarrays With Minimum Cost I

Time: O(n)
Space: O(1)

Approach

First subarray always starts at index 0; take 2 smallest values from remaining.

3010.cs
C#
// Approach: First subarray always starts at index 0; take 2 smallest values from remaining.
// Time: O(n) Space: O(1)

public class Solution
{
    public int MinimumCost(int[] nums)
    {
        const int MAX = 50;
        int min1 = MAX;
        int min2 = MAX;

        for (int i = 1; i < nums.Length; ++i)
        {
            if (nums[i] < min1)
            {
                min2 = min1;
                min1 = nums[i];
            }
            else if (nums[i] < min2)
                min2 = nums[i];
        }

        return nums[0] + min1 + min2;
    }
}
Advertisement
Was this solution helpful?