三个石头在一条直线上,分别在位置a, b, c处
每轮你可以选择一个最左或最右处的石头,然后将其移动至原先最左最右处的中间某处位置(不能和另外两个点重合)。
你需要一直移动石头直至三个石头处在连续位置。
当游戏结束时,返回达成上述局面所需的最小移动次数和最大移动次数。
示例1:
输入:a = 1, b = 2, c = 5
输出:[1,2]
解释:最小是将5移动到3,最大是从5移动到4再移动到3
提示:
- 1 <= a, b, c <= 100
- a != b != c
思路分析
不妨设a < b < c,首先分析最小情况:
对于任意三个数,我们总可以在两步之内
将其变成连续的三个数,如a,b,c
将a变成b-1,将c变成b+1。
如果a,b,c已经有序,那么最小移动次数是0次
如果a,b,c满足已经有两个数临近或间隔为2,也就是 1,2,x
或 1,3,x
的情况,那么最小移动次数是1次
其余情况全为2次
分析最大情况:
因为每次移动之后三个数总要靠近,那么每一次只靠近一步就是最大次数
对于a,b,c,最大移动次数为 c-b+1 + b-a+1
1 | class Solution: |