java.lang.Object
g2001_2100.s2059_minimum_operations_to_convert_number.Solution

public class Solution extends Object
2059 - Minimum Operations to Convert Number.<p>Medium</p> <p>You are given a <strong>0-indexed</strong> integer array <code>nums</code> containing <strong>distinct</strong> numbers, an integer <code>start</code>, and an integer <code>goal</code>. There is an integer <code>x</code> that is initially set to <code>start</code>, and you want to perform operations on <code>x</code> such that it is converted to <code>goal</code>. You can perform the following operation repeatedly on the number <code>x</code>:</p> <p>If <code>0 <= x <= 1000</code>, then for any index <code>i</code> in the array (<code>0 <= i < nums.length</code>), you can set <code>x</code> to any of the following:</p> <ul> <li><code>x + nums[i]</code></li> <li><code>x - nums[i]</code></li> <li><code>x ^ nums[i]</code> (bitwise-XOR)</li> </ul> <p>Note that you can use each <code>nums[i]</code> any number of times in any order. Operations that set <code>x</code> to be out of the range <code>0 <= x <= 1000</code> are valid, but no more operations can be done afterward.</p> <p>Return <em>the <strong>minimum</strong> number of operations needed to convert</em> <code>x = start</code> <em>into</em> <code>goal</code><em>, and</em> <code>-1</code> <em>if it is not possible</em>.</p> <p><strong>Example 1:</strong></p> <p><strong>Input:</strong> nums = [2,4,12], start = 2, goal = 12</p> <p><strong>Output:</strong> 2</p> <p><strong>Explanation:</strong> We can go from 2 \u2192 14 \u2192 12 with the following 2 operations.</p> <ul> <li> <p>2 + 12 = 14</p> </li> <li> <p>14 - 2 = 12</p> </li> </ul> <p><strong>Example 2:</strong></p> <p><strong>Input:</strong> nums = [3,5,7], start = 0, goal = -4</p> <p><strong>Output:</strong> 2</p> <p><strong>Explanation:</strong> We can go from 0 \u2192 3 \u2192 -4 with the following 2 operations.</p> <ul> <li> <p>0 + 3 = 3</p> </li> <li> <p>3 - 7 = -4</p> </li> </ul> <p>Note that the last operation sets x out of the range 0 <= x <= 1000, which is valid.</p> <p><strong>Example 3:</strong></p> <p><strong>Input:</strong> nums = [2,8,16], start = 0, goal = 1</p> <p><strong>Output:</strong> -1</p> <p><strong>Explanation:</strong> There is no way to convert 0 into 1.</p> <p><strong>Constraints:</strong></p> <ul> <li><code>1 <= nums.length <= 1000</code></li> <li><code>-10<sup>9</sup> <= nums[i], goal <= 10<sup>9</sup></code></li> <li><code>0 <= start <= 1000</code></li> <li><code>start != goal</code></li> <li>All the integers in <code>nums</code> are distinct.</li> </ul>
  • Constructor Details

    • Solution

      public Solution()
  • Method Details

    • minimumOperations

      public int minimumOperations(int[] nums, int start, int goal)