计算从位置 x 到 y 的最少步数

计算从位置 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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值