计算从位置 x 到 y 的最少步数
问题描述
小F正在进行一个 AB 实验,需要从整数位置 x 移动到整数位置 y。每一步可以将当前位置增加或减少,且每步的增加或减少的值必须是连续的整数(即每步的移动范围是上一步的 -1,+0 或 +1)。首末两步的步长必须是 1。求从 x 到 y 的最少步数。输入描述 输入包含两个整数 x 和 y,表示起始位置和目标位置。
输出描述 输出从 x 到 y 所需的最小步数。
def solution(xPosition, yPosition):
x = abs(xPosition - yPosition)
cnt = 1
while x > 2 * cnt:
x -= 2 * cnt
cnt += 1
if x == 0:
return cnt * 2 - 2
if x > 0 and x <= cnt:
return cnt * 2 - 1
if x >= cnt and x <= 2 * cnt:
return cnt * 2
return 0
if __name__ == "__main__":
# You can add more test cases here
print(solution(12, 6) == 4 )
print(solution(34, 45) == 6)
print(solution(50, 30) == 8)