题目:754. 到达终点数字
难度:普通
在一根无限长的数轴上,你站在0的位置。终点在target的位置。
你可以做一些数量的移动 numMoves :
示例 1:
输入: target = 2
输出: 3
解释: 第一次移动,从 0 到 1 。 第二次移动,从 1 到 -1 。 第三次移动,从 -1 到
2 。
示例 2:
输入: target = 3
输出: 2
解释: 第一次移动,从 0 到 1 。 第二次移动,从 1 到 3 。
提示:
-109 <= target <= 109
target != 0
数学问题, 这里target的值为正或负对结果无影响,这里取target的绝对值作为target,假设我们从0一直往前走,且能走到target或target之前,会遇到以下几种情况:
class Solution:
def reachNumber(self, target: int) -> int:
# 目标取绝对值
target = abs(target)
# 步数和步长
step, n = 0, 0
# 当步长小于target或者间距为奇数时,一直往前走,直到间距为偶数时返回步长即可
while step < target or (step - target) % 2 != 0:
n += 1
step += n
return n