797 到達乙個數字

2022-02-15 03:42:45 字數 1375 閱讀 8739

中文english

你站在乙個無窮數軸上的0位置。在位置目標上有乙個目標

在每乙個動作中,你可以向左或向右。在第n次移動中(從1開始),你行走n步。

返回到達目的地所需的最小步驟數。

樣例1

輸入: target = 3

輸出: 2

解釋:在第一步,我們從0到1。

在第二步,我們從1到3。

樣例2

輸入: target = 2

輸出: 3

解釋:在第一步,我們從0到1。

在第二個步驟中,我們從1到-1。

在第三步,從-1到2。

目標將是乙個非零的整數範圍[-10^9, 10^9]

class

solution:

"""@param target: the destination

@return: the minimum number of steps

"""'''

大致步驟:

1.不管目標是正數還是負數,都可以當做正數來計數,步驟數是一樣的

2.涉及到回退的問題,所以得用另乙個方法。首先可以將步數相加,直到大於或等於目標數,然後根據相加得到的步數-目標數 ,如果為偶數的話

那麼偶數/2這個步數需要從正數改為負數,既可以實現雙倍的反方向步數。如果為奇數的話,那麼需要在加上乙個奇數為止(可能下乙個數是偶數),直到

相加得到的步數和-目標數為偶數即可,然後根據之前偶數的方法,將偶數/2正數改為負數即可。

'''def reachnumber(self,target):

target =abs(target)

count = 0

i = 0

sum = 0

while

true:

count += 1

i += 1

sum +=i

if sum ==target:

return

count

elif sum>target:

#判斷是否步數之和-目標數是否是奇數還是偶數

num = sum -target

if num%2 == 0

: #將num/2這個數符號正數改為負數既可以實現,count不變

return

count

##如果為奇數的話,不處理,直到步數和-目標數為偶數的時候為止,就會return

elif num%2 == 1

:

continue

lintcode 797 到達乙個數字

你站在乙個無窮數軸上的 0 位置。在位置目標上有乙個目標。在每乙個動作中,你可以向左或向右。在第n次移動中 從1開始 你行走n步。返回到達目的地所需的最小步驟數。樣例 樣例1輸入 target 3 輸出 2 解釋 在第一步,我們從0到1。在第二步,我們從1到3。樣例2輸入 target 2 輸出 3...

逆序輸出乙個數字Python

問題是 輸入乙個數字,按照指定要求逆序輸出該數字 需求 使用python語言 逆序輸出乙個數字 如果數字是正數直接輸出如 177 771 如果數字是負數保留負號如 945 549 如果數字以0結果逆序後需要去除0如 100 1 如果數字很大會造成溢位返回0即可 之前見乙個作者寫的不是特別好,自己寫了...

乙個陣列中有乙個數字的次數超過了陣列的一半

問題描述 乙個陣列中有乙個數字的次數超過了陣列的一半,求出這個字元。如 int a 求出超過一半的數字是2。問題分析 方法1 時間複雜度o n 思路 如果乙個數出現的次數超過陣列一半的長度,那麼就是說出現的次數比其他所有數字出現的次數還要多。因此我們可以考慮儲存2個值,乙個是陣列中的乙個數,乙個是數...