思路:第一反應是回溯問題,不斷窮舉nums【i】可能經過的路線,但是很遺憾,執行超時了
**如下,也算是提供思路吧:
class
solution
void
backtrack
(vector<
int>
& nums,
int startindex,
bool
& flag)
for(
int i =
1; i <= nums[startindex]
; i++)}
};
另一種思路:我們發現阻擋我們前進的只有元素0,因此只要判斷我們能否跨過值為0的元素,那麼我們就能繼續前進:
class
solution
else
if(i >
0&& i < nums.
size()
-1)else
startindex--;}
//遇到0不能跳過,之間返回false
if(flag ==
false
)return flag;}}
}return flag;}}
;
那我們換種思路,用貪心演算法來看看這道題:每次取最大跳躍步數(取最大覆蓋範圍),整體最優解:最後得到整體最大覆蓋範圍,看是否能到終點。
每次i只能在cover區間內取值
class
solution
return
false;}
};
貪心演算法 跳躍遊戲
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。輸入 2,3,1,1,4 輸出 true 解釋 從位置 0 到 1 跳 1 步,然後跳 3 步到達最後乙個位置。輸入 3,2,1,0,4 輸出 false 解釋 無論怎...
跳躍遊戲 貪心演算法
給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。你的目標是使用最少的跳躍次數到達陣列的最後乙個位置。示例 輸入 2,3,1,1,4 輸出 2 解釋 跳到最後乙個位置的最小跳躍數是 2。從下標為 0 跳到下標為 1 的位置,跳 1 步,然後跳 3 步...
貪心演算法 跳躍遊戲
跳躍遊戲 給定乙個非負整數陣列,你最初位於陣列的第乙個位置。陣列中的每個元素代表你在該位置可以跳躍的最大長度。判斷你是否能夠到達最後乙個位置。示例 1 輸入 2,3,1,1,4 輸出 true 解釋 我們可以先跳 1 步,從位置 0 到達 位置 1,然後再從位置 1 跳 3步到達最後乙個位置。示例 ...