mirror of
https://gitee.com/coder-xiaomo/leetcode-problemset
synced 2025-01-11 02:58:13 +08:00
61 lines
2.4 KiB
HTML
61 lines
2.4 KiB
HTML
<p>给你一个下标从 <strong>0</strong> 开始的整数数组 <code>nums</code> ,该数组由 <strong>互不相同</strong> 的数字组成。另给你两个整数 <code>start</code> 和 <code>goal</code> 。</p>
|
||
|
||
<p>整数 <code>x</code> 的值最开始设为 <code>start</code> ,你打算执行一些运算使 <code>x</code> 转化为 <code>goal</code> 。你可以对数字 <code>x</code> 重复执行下述运算:</p>
|
||
|
||
<p>如果 <code>0 <= x <= 1000</code> ,那么,对于数组中的任一下标 <code>i</code>(<code>0 <= i < nums.length</code>),可以将 <code>x</code> 设为下述任一值:</p>
|
||
|
||
<ul>
|
||
<li><code>x + nums[i]</code></li>
|
||
<li><code>x - nums[i]</code></li>
|
||
<li><code>x ^ nums[i]</code>(按位异或 XOR)</li>
|
||
</ul>
|
||
|
||
<p>注意,你可以按任意顺序使用每个 <code>nums[i]</code> 任意次。使 <code>x</code> 越过 <code>0 <= x <= 1000</code> 范围的运算同样可以生效,但该该运算执行后将不能执行其他运算。</p>
|
||
|
||
<p>返回将 <code>x = start</code><em> </em>转化为<em> </em><code>goal</code><em> </em>的最小操作数;如果无法完成转化,则返回<em> </em><code>-1</code><em> </em>。</p>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>示例 1:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>nums = [2,4,12], start = 2, goal = 12
|
||
<strong>输出:</strong>2
|
||
<strong>解释:</strong>
|
||
可以按 2 → 14 → 12 的转化路径进行,只需执行下述 2 次运算:
|
||
- 2 + 12 = 14
|
||
- 14 - 2 = 12
|
||
</pre>
|
||
|
||
<p><strong>示例 2:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>nums = [3,5,7], start = 0, goal = -4
|
||
<strong>输出:</strong>2
|
||
<strong>解释:</strong>
|
||
可以按 0 → 3 → -4 的转化路径进行,只需执行下述 2 次运算:
|
||
- 0 + 3 = 3
|
||
- 3 - 7 = -4
|
||
注意,最后一步运算使 x 超过范围 0 <= x <= 1000 ,但该运算仍然可以生效。
|
||
</pre>
|
||
|
||
<p><strong>示例 3:</strong></p>
|
||
|
||
<pre>
|
||
<strong>输入:</strong>nums = [2,8,16], start = 0, goal = 1
|
||
<strong>输出:</strong>-1
|
||
<strong>解释:</strong>
|
||
无法将 0 转化为 1</pre>
|
||
|
||
<p> </p>
|
||
|
||
<p><strong>提示:</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><code>nums</code> 中的所有整数互不相同</li>
|
||
</ul>
|