1. 程式人生 > >754. Reach a Number

754. Reach a Number

You are standing at position 0 on an infinite number line. There is a goal at position target.

On each move, you can either go left or right. During the n-th move (starting from 1), you take n steps.

Return the minimum number of steps required to reach the destination.

Example 1:

Input: target = 3
Output: 2
Explanation:
On the first move we step from 0 to 1.
On the second step we step from 1 to 3.

Example 2:

Input: target = 2
Output: 3
Explanation:
On the first move we step from 0 to 1.
On the second move we step  from 1 to -1.
On the third move we step from -1 to 2.

Note:

  • target will be a non-zero integer in the range [-10^9, 10^9].
class Solution:
    def reachNumber(self, target):
        """
        :type target: int
        :rtype: int
        """
        t = abs(target)
        n,sum = 0,0
        while t>sum:
            n += 1
            sum += n
        if t==sum:
            return n
        remain = sum-target
        if remain%2==0:
            return n
        else:
            return n+1 if(n%2)==0 else n+2

完全是找數字規律的題目,如果用dfs來搜尋的話記憶體會超。

參考: https://blog.csdn.net/u014688145/article/details/78948918