Minimum Value to Get Positive Step by Step Sum - Array - Easy - LeetCode
💻 coding

Minimum Value to Get Positive Step by Step Sum - Array - Easy - LeetCode

2 min read 380 words
2 min read
ShareWhatsAppPost on X
  • 1The minimum positive startValue ensures the step by step sum never drops below 1 during iteration through the array.
  • 2For the input array [-3,2,-3,4,2], the minimum startValue required is 5 to maintain a positive sum.
  • 3The algorithm operates with a time complexity of O(n) and a space complexity of O(1).

AI-generated summary · May not capture all nuances

Key Insight
AskGif

"The minimum positive startValue ensures the step by step sum never drops below 1 during iteration through the array."

Minimum Value to Get Positive Step by Step Sum - Array - Easy - LeetCode

Given an array of integers nums, you start with an initial positive value startValue.

In each iteration, you calculate the step by step sum of startValue plus elements in nums (from left to right).

Return the minimum positive value of startValue such that the step by step sum is never less than 1.

Example 1:

Input: nums = [-3,2,-3,4,2]

Output: 5

Explanation: If you choose startValue = 4, in the third iteration your step by step sum is less than 1.

step by step sum

startValue = 4 | startValue = 5 | nums

(4 -3 ) = 1 | (5 -3 ) = 2 | -3

(1 +2 ) = 3 | (2 +2 ) = 4 | 2

(3 -3 ) = 0 | (4 -3 ) = 1 | -3

(0 +4 ) = 4 | (1 +4 ) = 5 | 4

(4 +2 ) = 6 | (5 +2 ) = 7 | 2

Example 2:

Input: nums = [1,2]

Output: 1

Explanation: Minimum start value should be positive.

Example 3:

Input: nums = [1,-2,-3]

Output: 5

Constraints:

1 <= nums.length <= 100

-100 <= nums[i] <= 100

Solution:

using System;
using System.Collections.Generic;
using System.Text;

namespace LeetCode.AskGif.Easy.Array
{
 public class MinStartValueSoln
 {
 public int MinStartValue(int[] nums)
 {
 if(nums.Length == 0)
 {
 return 0;
 }

 int minVal = 0;
 int sum = 0;
 for (int i = 0; i < nums.Length; i++)
 {
 sum += nums[i];
 if (sum < 0 && (Math.Abs(sum) + 1 > minVal))
 {
 minVal = Math.Abs(sum)+ 1;
 }
 }
 
 if(minVal == 0)
 {
 minVal = 1;
 }

 return minVal;
 }
 }
}

Time Complexity: O(n)

Space Complexity: O(1)

Unit Tests:

using LeetCode.AskGif.Easy.Array;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
using System.Collections.Generic;
using System.Text;

namespace CodingUnitTest.Easy.Array
{
 [TestClass]
 public class MinStartValueSolnTests
 {
 [TestMethod]
 public void MinStartValueSoln_First()
 {
 var input = new int[] { -3, 2, -3, 4, 2 }; 
 var output = 5;
 var res = new MinStartValueSoln().MinStartValue(input);

 Assert.AreEqual(res, output);
 }

 [TestMethod]
 public void MinStartValueSoln_Second()
 {
 var input = new int[] { 1, 2 };
 var output = 1;
 var res = new MinStartValueSoln().MinStartValue(input);

 Assert.AreEqual(res, output);
 }

 [TestMethod]
 public void MinStartValueSoln_Third()
 {
 var input = new int[] { 1, -2, -3 };
 var output = 5;
 var res = new MinStartValueSoln().MinStartValue(input);

 Assert.AreEqual(res, output);
 }
 }
}

Enjoyed this article?

Share it with someone who'd find it useful.

ShareWhatsAppPost on X

AskGif

Published on 6 June 2020 · 2 min read · 380 words

Part of AskGif Blog · coding

You might also like