我有一个机器人在 x 轴上移动,最初它位于位置 0。
对于第 1 步,它会转到 +1
对于step2,它在轴上移动-2个单位,因此它被放置在-1上
对于步骤 3 -> 步骤 2 中的步数 - 步骤 1 中的步数 = -2 -1 = -3,因此机器人从上一步即 -1 移动了 -3 个单位,因此机器人被放置在 -4 处
给定输入n步,找到机器人位置:
这是我的代码:
public static int solve(int n) {
if(n==0) return 0;
if(n ==1) return -1;
if(n == 2) return -1;
int one = 1, two = -2;
int result = one + two;
int move = result;
for(int i=3; i<=n; i++) {
move = two - one;
one = two;
two = move;
result += move;
}
return result;
}
我的代码适用于小输入,例如
n=3, result is -4
。对于 n = 100000, result = -5
,但对于像 n = 2147483647, output should be 1
这样的大输入会失败,我的代码会失败并出现超时错误。如何以较少的时间复杂度解决这个问题。
基本上,对于
n = 2147483647
,您有一个无限循环导致超时错误。由于 2147483647 是 Java 中整数的最大值,因此 i
的值会溢出该最大值。