问题描述
小F正在进行一个 AB 实验,需要从整数位置 x 移动到整数位置 y。每一步可以将当前位置增加或减少,且每步的增加或减少的值必须是连续的整数(即每步的移动范围是上一步的 -1,+0 或 +1)。首末两步的步长必须是 1。求从 x 到 y 的最少步数。
输入描述
输入包含两个整数 x 和 y,表示起始位置和目标位置。
输出描述
输出从 x 到 y 所需的最小步数。
测试样例
样例1:
输入:
x_position = 12, y_position = 6
输出:4
样例2:
输入:
x_position = 34, y_position = 45
输出:6
样例3:
输入:
x_position = 50, y_position = 30
输出:8
样例4:
输入:
x_position = 0, y_position = 0
输出:0
JS解法一: 参考来自https://juejin.cn/post/7433079621828116492
function solution(x_position, y_position) {
let dist = Math.abs(x_position - y_position)
if (dist == 0) {
return 0;
}
let i = 0;
while (dist > 0) {
dist -= i * 2;
i++;
}
if (-dist >= i-1) {
return 2 * (i - 1) - 1
} else {
return 2 * (i - 1)
}
}
js解法二: 参考来自https://juejin.cn/post/7435559894445064229
function solution(x_position, y_position) {
let dist = Math.abs(x_position - y_position)
if(dist == 0){return 0 ;}
let i = 0;
while (dist > i * 2) {
dist -= i * 2;
i++;
}
if (dist == 0) {
return 2 * (i - 1)
} else if (dist <= i) {
return 2 * (i - 1) + 1
} else if (dist > i && dist <= i * 2) {
return 2 * (i - 1) + 2
}
}