题目简介:
三枚石子放置在数轴上,位置分别为 a
,b
,c
。
每一回合,你可以从两端之一拿起一枚石子(位置最大或最小),并将其放入两端之间的任一空闲位置。形式上,假设这三枚石子当前分别位于位置 x, y, z
且 x < y < z
。那么就可以从位置 x
或者是位置z
拿起一枚石子,并将该石子移动到某一整数位置 k
处,其中 x < k < z
且 k != y
。
当你无法进行任何移动时,即,这些石子的位置连续时,游戏结束。
要使游戏结束,你可以执行的最小和最大移动次数分别是多少? 以长度为 2 的数组形式返回答案:answer = [minimum_moves, maximum_moves]
示例 1:
1 | 输入:a = 1, b = 2, c = 5 |
提示:
1 <= a <= 100
1 <= b <= 100
1 <= c <= 100
a != b, b != c, c != a
思路:
首先最大次数:就是将两端的石子一步一步往中间石子靠近即可。
最小次数分为三种情况:
- 若本身就是连续的,那就是0
- 若三个石子之间有两个石子中间空了一格,那么我们只需将另外的那个石子放进这个空格即可,最小次数为1
- 其余情况,都是将两端石子放在中间石子的两侧,各需要一次,总共2次。
代码如下:
1 | class Solution { |