在一根無限長的數軸上,你站在0
的位置。終點在target
的位置。
每次你可以選擇向左或向右移動。第 n 次移動(從 1 開始),可以走 n 步。
返回到達終點需要的最小移動次數。
示例 1:
輸入: target = 3 輸出: 2 解釋: 第一次移動,從 0 到 1 。 第二次移動,從 1 到 3 。
示例 2:
輸入: target = 2 輸出: 3 解釋: 第一次移動,從 0 到 1 。 第二次移動,從 1 到 -1 。 第三次移動,從 -1 到 2 。
注意:
target
是在[-10^9, 10^9]
範圍中的非零整數。
Code:
class Solution {
public int reachNumber(int target) {
int abs = Math.abs(target);
int res = 0,i = 1;
for (; res < abs; i++) {
res += i;
}
i--;
if ((res-abs)%2==0) {
return i;
}else{
if(i%2==0){
return i+1;
}else{
return i+2;
}
}
}
}