LeetCode 45. Jump Game II

来源:互联网 发布:网络广播电台小川 编辑:程序博客网 时间:2024/03/29 02:46

问题

https://leetcode.com/problems/jump-game-ii/

解法

贪心法, 首先使用一个堆栈记录跳转路径,从后往前走(参考上一篇), 不断加入新节点,如果新节点可以跳过栈顶节点而到达栈的其他节点,则删除之间的节点。这样得到的路径总是比之前的路径短。

class Solution {public:    int jump(vector<int>& nums) {        if (nums.size() ==0)            return 0;        if (nums.size() ==1)            return 0;        int ss[nums.size()];        int sp = -1;        ss[++sp] = nums.size()-1;        for (int i=nums.size()-2; i>=0; --i)        {            int now = i+nums[i];            if (now >= ss[sp])            {                while(sp>0 && now>= ss[sp-1]) --sp;                ss[++sp] = i;            }        }        return sp;    }};
0 0