#刷题交流# 打卡第17天,问题描述
小F正在进行一个 AB 实验,需要从整数位置 x 移动到整数位置 y。每一步可以将当前位置增加或减少,且每步的增加或减少的值必须是连续的整数(即每步的移动范围是上一步的 -1,+0 或 +1)。首末两步的步长必须是 1。求从 x 到 y 的最少步数。解题思路:首先计算起始位置 x_position 和目标位置 y_position 的差值的绝对值 diff,这个差值就是需要移动覆盖的距离。然后通过一个 while 循环去寻找合适的最大步长 n。根据题目移动规则,整个移动过程可以类比成一个先递增步长然后再递减步长的过程(类似等差数列),利用等差数列求和公式 n * (n + 1) / 2 来判断当前假设的最大步长 n 对应的移动距离总和是否能够覆盖需要移动的距离 diff。只要总和小于 diff,就不断增加 n 的值。最后,不管计算出来的总和是刚好等于 diff 还是略大于 diff,按照题目要求要达到最少步数且首末步长为 1 的情况,所需要的最少步数就是这个最终确定的 n。