asp.net做的網(wǎng)站要放到網(wǎng)上空間去_要放哪些文件上去網(wǎng)站建網(wǎng)站建設網(wǎng)站
題目
給定一個長度為 n 的 0 索引整數(shù)數(shù)組 nums。初始位置為 nums[0]。
每個元素 nums[i] 表示從索引 i 向前跳轉的最大長度。換句話說,如果你在 nums[i] 處,你可以跳轉到任意 nums[i + j] 處:
0 <= j <= nums[i]
i + j < n
返回到達 nums[n - 1] 的最小跳躍次數(shù)。生成的測試用例可以到達 nums[n - 1]。
示例
輸入: nums = [2,3,1,1,4]
輸出: 2
解釋: 跳到最后一個位置的最小跳躍數(shù)是 2。
從下標為 0 跳到下標為 1 的位置,跳 1 步,然后跳 3 步到達數(shù)組的最后一個位置。
解析
這道題和『跳躍游戲I』不同的就是上道題求能不能跳到終點,這道題求最小幾步能跳到終點。
在遍歷數(shù)組的時候,不必要訪問數(shù)組的最后一個元素,因為題目保證了一定能跳到最后一個位置,那我們在訪問最后一個元素的時候,我們的邊界一定是大于等于最后一個元素。如果訪問最后一個元素,在邊界恰好為最后一個位置的情況下,會增加一次次數(shù)(解釋的是下面代碼中i < n-1的邏輯)。
舉個例子:2,3,1,1,4 這個數(shù)組,開始的時候2可以跳到3或1的位置,假如跳到3,則又可以直接跳到終點,只需要兩步即可;如果是i <= n-1的話,在n-1的位置又要算一下,然后命中step++,結果就不對了
func jump(nums []int) int {n := len(nums)maxPosition := 0 // 最大可跳步數(shù)end := 0 // 邊界step := 0for i := 0; i < n-1; i++ { // 這里要小于n-1maxPosition = max(maxPosition, i+nums[i])if i == end { // 每次到邊界,就將邊界更新成最大可跳步數(shù),并將步數(shù)+1end = maxPositionstep++}}return step
}