Leetcode 45 跳跃游戏 贪心
题目描述:
题解:一开始的时候想到用的是dp,但是dp的复杂为O(n^2),超时了。仔细想想发现是一道贪心的题目,贪心地选择可达距离最大的位置作为每次跳跃的落点。具体描述见代码:
AC代码:
int jump(vector<int>& nums) { int Len = nums.size(); int ans = 0; if(Len == 1) return 0; for(int i=0;i<Len;) { int e = i + nums[i]; int mx = -1; if(e >= Len-1) { ans++; return ans; } int pos; for(int j=i+1;j<=e;j++) { // 选择下次跳远能跳最远的位置 if(mx < j+nums[j]) { mx = j+nums[j]; pos = j; } } i = pos; ans++; } return ans; }