Algorithm


Problem Name: 991. Broken Calculator

There is a broken calculator that has the integer startValue on its display initially. In one operation, you can:

  • multiply the number on display by 2, or
  • subtract 1 from the number on display.

Given two integers startValue and target, return the minimum number of operations needed to display target on the calculator.

 

Example 1:

Input: startValue = 2, target = 3
Output: 2
Explanation: Use double operation and then decrement operation {2 -> 4 -> 3}.

Example 2:

Input: startValue = 5, target = 8
Output: 2
Explanation: Use decrement and then double {5 -> 4 -> 8}.

Example 3:

Input: startValue = 3, target = 10
Output: 3
Explanation: Use double, decrement and double {3 -> 6 -> 5 -> 10}.

 

Constraints:

  • 1 <= startValue, target <= 109

Code Examples

#1 Code Example with Java Programming

Code - Java Programming


class Solution {
  public int brokenCalc(int startValue, int target) {
    int numOfSteps = 0;
    while (target > startValue) {
      numOfSteps++;
      if (target % 2 == 1) {
        target++;
      } else {
        target /= 2;
      }
    }
    return numOfSteps + startValue - target;
  }
}
Copy The Code & Try With Live Editor

Input

x
+
cmd
startValue = 2, target = 3

Output

x
+
cmd
2

#2 Code Example with Python Programming

Code - Python Programming


class Solution:
    def brokenCalc(self, X, Y):
        res = 0
        while X < Y:
            res += Y % 2 + 1
            Y = (Y + 1) // 2
        return res + X - Y
Copy The Code & Try With Live Editor

Input

x
+
cmd
startValue = 2, target = 3

Output

x
+
cmd
2
Advertisements

Demonstration


Previous
#990 Leetcode Satisfiability of Equality Equations Solution in C, C++, Java, JavaScript, Python, C# Leetcode
Next
#992 Leetcode Subarrays with K Different Integers Solution in C, C++, Java, JavaScript, Python, C# Leetcode