问题描述
小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
方法一:模拟法
public class Main {public static int solution(int xPosition, int yPosition) {int length = Math.abs(xPosition-yPosition);//num是指走的路是对称的,所以走两遍int num = 0;int len = 1;int res = 0;while (length > 0){if(num == 2){len++;num = 0;}length -= len;num++;res++;}return res;}public static void main(String[] args) {// You can add more test cases hereSystem.out.println(solution(12, 6) == 4);System.out.println(solution(34, 45) == 6);System.out.println(solution(50, 30) == 8);}
}