LeetCode-in-Java

2749. Minimum Operations to Make the Integer Zero

Medium

You are given two integers num1 and num2.

In one operation, you can choose integer i in the range [0, 60] and subtract 2i + num2 from num1.

Return the integer denoting the minimum number of operations needed to make num1 equal to 0.

If it is impossible to make num1 equal to 0, return -1.

Example 1:

Input: num1 = 3, num2 = -2

Output: 3

Explanation: We can make 3 equal to 0 with the following operations:

It can be proven, that 3 is the minimum number of operations that we need to perform.

Example 2:

Input: num1 = 5, num2 = 7

Output: -1

Explanation: It can be proven, that it is impossible to make 5 equal to 0 with the given operation.

Constraints:

Solution

public class Solution {
    public int makeTheIntegerZero(int num1, int num2) {
        for (int i = 0; i <= 60; i++) {
            long target = num1 - (long) num2 * i;
            long noOfBits = Long.bitCount(target);
            if (i >= noOfBits && i <= target) {
                return i;
            }
        }
        return -1;
    }
}