754. Reach a Number
阿新 • • 發佈:2019-01-13
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