Leetcode第754题:到达最终数字(Reaching a number)
解题思路
1+2+3+4+5+6=15,而1+2-3+4+5+6=9,对于同样的累加,一个数字符号相反,结果少了2*A,这是一条规律。
- 当移动的总距离
num刚好等于target时,返回移动的次数就可以了。 - 对于负的
target,可以取绝对值,当移动的总距离num等于target,且num-target是2*a也就是偶数时,
此时移动的次数就是最小的次数。
核心代码如下:
class Solution {
public:
int reachNumber(int target) {
int ret, num = 0;
int t = abs(target);
while (num < t || (num - t)%2 != 0) {
num += ++ret;
}
return ret;
}
};

浙公网安备 33010602011771号