n步后找到机器人位置

问题描述 投票:0回答:1

我有一个机器人在 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
这样的大输入会失败,我的代码会失败并出现超时错误。如何以较少的时间复杂度解决这个问题。

java algorithm
1个回答
0
投票

基本上,对于

n = 2147483647
,您有一个无限循环导致超时错误。由于 2147483647 是 Java 中整数的最大值,因此
i
的值会溢出该最大值。

© www.soinside.com 2019 - 2024. All rights reserved.