java.lang.Object
g3301_3400.s3376_minimum_time_to_break_locks_i.Solution

public class Solution extends Object
3376 - Minimum Time to Break Locks I.

Medium

Bob is stuck in a dungeon and must break n locks, each requiring some amount of energy to break. The required energy for each lock is stored in an array called strength where strength[i] indicates the energy needed to break the ith lock.

To break a lock, Bob uses a sword with the following characteristics:

  • The initial energy of the sword is 0.
  • The initial factor X by which the energy of the sword increases is 1.
  • Every minute, the energy of the sword increases by the current factor X.
  • To break the ith lock, the energy of the sword must reach at least strength[i].
  • After breaking a lock, the energy of the sword resets to 0, and the factor X increases by a given value K.

Your task is to determine the minimum time in minutes required for Bob to break all n locks and escape the dungeon.

Return the minimum time required for Bob to break all n locks.

Example 1:

Input: strength = [3,4,1], K = 1

Output: 4

Explanation:

TimeEnergyXActionUpdated X
001Nothing1
111Break 3rd Lock2
222Nothing2
342Break 2nd Lock3
433Break 1st Lock3

The locks cannot be broken in less than 4 minutes; thus, the answer is 4.

Example 2:

Input: strength = [2,5,4], K = 2

Output: 5

Explanation:

TimeEnergyXActionUpdated X
001Nothing1
111Nothing1
221Break 1st Lock3
333Nothing3
463Break 2nd Lock5
555Break 3rd Lock7

The locks cannot be broken in less than 5 minutes; thus, the answer is 5.

Constraints:

  • n == strength.length
  • 1 <= n <= 8
  • 1 <= K <= 10
  • 1 <= strength[i] <= 106
  • Constructor Details

    • Solution

      public Solution()
  • Method Details

    • findMinimumTime

      public int findMinimumTime(List<Integer> strength, int k)