Leetcode到達終點數字

2021-10-06 04:31:04 字數 765 閱讀 6566

leetcode

在一根無限長的數軸上,你站在0的位置。終點在target的位置。

每次你可以選擇向左或向右移動。第 n 次移動(從 1 開始),可以走 n 步。

返回到達終點需要的最小移動次數。

1.target 可能為正或負,但從0走到2:1-2+3 等價於從0走到-2:-1+2-3

2. 把target當成正數,每次向右走,如果sum==target,達到,如果sum>target,則說明中間一步需要向左走。

3. 如果第k步從原來的正數變為負數,即sum-k-k

4. 如果sum-target能是偶數,則說明可以通過轉換某幾步左走實現

5. 如果sum-target是奇數,則sum-target+1為偶數

class

solution

:def

reachnumber

(self, target:

int)

->

int:

target =

abs(target)

sum=

0 x =

1while

true

:sum

+=x if

sum==target:

return x

ifsum>target and

(sum

-target)%2

==0:return x

x+=1

leetcode 754 到達終點數字

在一根無限長的數軸上,你站在0的位置。終點在target的位置。每次你可以選擇向左或向右移動。第 n 次移動 從 1 開始 可以走 n 步。返回到達終點需要的最小移動次數。示例 1 輸入 target 3 輸出 2 解釋 第一次移動,從 0 到 1 第二次移動,從 1 到 3 示例 2 輸入 tar...

LeetCode754 到達終點數字

在一根無限長的數軸上,你站在0的位置。終點在target的位置。每次你可以選擇向左或向右移動。第 n 次移動 從 1 開始 可以走 n 步。返回到達終點需要的最小移動次數。示例 1 輸入 target 3 輸出 2 解釋 第一次移動,從 0 到 1 第二次移動,從 1 到 3 示例 2 輸入 tar...

leetcode 754 到達終點數字

題目 在一根無限長的數軸上,你站在0的位置。終點在target的位置。每次你可以選擇向左或向右移動。第 n 次移動 從 1 開始 可以走 n 步。返回到達終點需要的最小移動次數 class solution return i 1 target的正負與答案無關,故取正,假設前n步均向右走,如果恰好得到...