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