0055-跳躍遊戲

LanceZh發表於2024-06-16

55. 跳躍遊戲

給你一個非負整數陣列 nums ,你最初位於陣列的 第一個下標 。陣列中的每個元素代表你在該位置可以跳躍的最大長度。

判斷你是否能夠到達最後一個下標,如果可以,返回 true ;否則,返回 false 。

示例 1:

輸入:nums = [2,3,1,1,4]
輸出:true
解釋:可以先跳 1 步,從下標 0 到達下標 1, 然後再從下標 1 跳 3 步到達最後一個下標。

示例 2:

輸入:nums = [3,2,1,0,4]
輸出:false
解釋:無論怎樣,總會到達下標為 3 的位置。但該下標的最大跳躍長度是 0 , 所以永遠不可能到達最後一個下標。

題解

package canjump

func canJump(nums []int) bool {

	n := len(nums)
	end := n - 1    // 需要到達的最遠位置
	result := false // 當前位置是否能到達

	// 從後往前遍歷
	for i := n - 1; i >= 0; i-- {
		if i+nums[i] >= end { // 索引加跳數大於等於需要到達的最遠位置
			result = true // 當前位置可以到達
			end = i       // 修改最遠位置位當前位置
		} else {
			result = false // 不能到達
		}
	}

	// 返回結果
	return result
}


相關文章