打卡第二十八天 Task28 跳躍遊戲

2021-10-04 12:52:10 字數 2899 閱讀 2512

給定乙個非負整數陣列,你最初位於陣列的第乙個位置。

陣列中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達最後乙個位置。

輸入:[2

,3,1

,1,4

]輸出: true

解釋: 我們可以先跳 1 步,從位置 0 到達 位置 1

, 然後再從位置 1 跳 3 步到達最後乙個位置。

輸入:[3

,2,1

,0,4

]輸出: false

解釋: 無論怎樣,你總會到達索引為 3 的位置。但該位置的最大跳躍長度是 0 , 所以你永遠不可能到達最後乙個位置。

最開始想找出0的位置,然後判斷0之前的資料是否能過越過0這個數,以此來達到判斷的目的

class

solution

:def

canjump

(self, nums: list[

int])-

>

bool:if

0not

in nums:

return

true

num = nums.index(0)

n =0if

(num ==

0and

len(nums)==1

)or num ==

len(nums)-1

:return

true

for i in

range

(num)

:if nums[i]

>=

len(nums[i +1:

]):return

true

if nums[i]

<= num - i:

n +=

1if n == num:

return

false

return self.canjump(nums[num:

])

然後發現這樣寫,雖然運用遞迴呼叫可以重複判斷,但是只能計算最後一次出現0可以是重複的情況,例如[3,0,1,3,0,0,2],無法判斷中間連續出現0的情況,例如[4,2,0,0,5,2,0,4]。

接著對**進行修改,改為從後向前遍歷,判斷每乙個0值的前面的資料是否能過跳過這個0。

法一

class

第二中方法是第一中的高階版本,也採用了倒推的方法,不過這個方法是根據每一次的位置前面是否能夠達到來不斷向前判斷,如果能夠達到就會更新last的值,直到第乙個位置的數也能達到所需達到的地點,才會輸出整個判斷為true,若last不能到達第乙個位置,則沒有能夠到達此時end位置的資料,則遊戲不成功,返回false

法二

class

第三種方法則是以每乙個元素都當作起點,判斷出每乙個位置所能跳躍的最大距離,一步步向後推進,判斷最後是否能夠跳過所有資料

法三

class

第二十八天

1 建立乙個名稱為itcast的資料庫。create database itcast 2 設計資料表tb student的字段結構,欄位有id 學號 name 姓名 age 年齡 enrolmentdate 入學時間 並選擇適合的資料型別。tb student資料表的字段結構如下表所示 欄位名 型別...

蛻變,第二十八天

1 什麼是包 包是模組的一種形式,包的本質就是乙個含有 init py檔案的資料夾 2.為什麼要有包 因為如果我們要把我們寫的一大堆功能分類處理,並且數量眾多,我們需要進行分檔案儲存,則需要用到包的概念 3 如何用包 匯入包就是在包下的 init py import from import 注意的問...

冥想第二十八天

今天5點多就不困了,天氣有點冷,醒了。告訴自己,都是正常的。確實是正常的。都是人最直觀的感受。改變固有思維,以前會聯想很多造成的,讓自己越來越膽小。可這一切都是那麼的正常。固定的生物鐘也改起了。一切放輕鬆。不怪以前的自己,畢竟自己一天比一天好。多學習別人身上的優點,不狹隘。不能因為環境冷了,而埋怨自...