开始想法扫描一次。。。然后再标记一次。。。O(n^2)
但是。。。TLE啦。。。太暴力了。。。
其实只要标记过了的,我们就不用处理了。。。
然后如果到达一个可到达的地方,而且要jump到没有标记的地方,那么我们再标记吧,O(n)
class Solution { public: bool canJump(int A[], int n) { vector<bool> f(n,false); f[0] = true; int maxi = 0; for(int i = 0 ; i < n ; i++){ if(f[i]) { if(i + A[i] > maxi) { for(int j = maxi + 1 ; j <= i + A[i] && j < n ; j++) f[j] = true; maxi = i + A[i]; } } } return f[n-1]; } };
by 1957