LintCode 跳躍遊戲 解答

 跳躍遊戲

給出一個非負整數數組,你最初定位在數組的第一個位置。   

數組中的每個元素代表你在那個位置可以跳躍的最大長度。    

判斷你是否能到達數組的最後一個位置。

 注意事項

這個問題有兩個方法,一個是貪心和 動態規劃

貪心方法時間複雜度爲O(N)

動態規劃方法的時間複雜度爲爲O(n^2)

我們手動設置小型數據集,使大家闊以通過測試的兩種方式。這僅僅是爲了讓大家學會如何使用動態規劃的方式解決此問題。如果您用動態規劃的方式完成它,你可以嘗試貪心法,以使其再次通過一次。

樣例

A = [2,3,1,1,4],返回 true.

A = [3,2,1,0,4],返回 false.



class Solution {
public:
    /**
     * @param A: A list of integers
     * @return: The boolean answer
     */
    bool func(vector<int> A, int i, int size)
	{
		if (i >= size - 1)
			return true;
		
		int t = A[i];
		while (t > 0)
		{
			if (func(A, t + i, size))
				return true;
			t--;
		}
		return false;
	}

	bool canJump(vector<int> A) {
		// write you code here
		int size = A.size();
		int i = 0;
		return func(A, i, size);
	
	}
};


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章