Leetcode第754题:到达最终数字(Reaching a number)

解题思路

1+2+3+4+5+6=15,而1+2-3+4+5+6=9,对于同样的累加,一个数字符号相反,结果少了2*A,这是一条规律。

  1. 当移动的总距离num刚好等于target时,返回移动的次数就可以了。
  2. 对于负的target,可以取绝对值,当移动的总距离num等于target,且num-target2*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;
    }
};
posted @ 2022-11-04 10:20  hql5  阅读(35)  评论(0)    收藏  举报