797. 到达一个数字
你站在一个无穷数轴上的
0
位置。在位置目标上有一个
目标
。
在每一个动作中,你可以向左或向右。在第n次移动中(从1开始),你行走n步。
返回到达目的地所需的最小步骤数。
样例
样例1
输入: target = 3
输出: 2
解释:
在第一步,我们从0到1。
在第二步,我们从1到3。
样例2
输入: target = 2
输出: 3
解释:
在第一步,我们从0到1。
在第二个步骤中,我们从1到-1。
在第三步,从-1到2。
注意事项
目标
将是一个非零的整数范围
[-10^9, 10^9]
。
public class Solution {
/**
* @param target: the destination
* @return: the minimum number of steps
*/
public int reachNumber(int target) {
// Write your code here
int sum = 0;
int flag = 0;
int i = 1;
target=Math.abs(target);
for (; flag < target; ) {
flag = flag + i;
sum++;
i++;
}
if (flag > target) {
int ret = flag - target;
// System.out.println( ret + "," + sum);
if (ret % 2 == 0) {
// sum += 4;
} else {
if (sum%2 == 1) {
sum += 2;
} else{
sum += 1;
}
}
}
return sum;
}
}