第十七周 Leetcode 403. Frog Jump(HARD) 线性dp

Posted 逐雪

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第十七周 Leetcode 403. Frog Jump(HARD) 线性dp相关的知识,希望对你有一定的参考价值。

leetcode403

我们维护青蛙从某个石头上可以跳那些长度的距离即可 用平衡树维护。

总的复杂度O(n^2logn)

class Solution {
public:
     bool canCross(vector<int>& stones) {
 	 map<int,int>po;
 	 int n=stones.size();
 	 map<int,int>dis[1500];
 	 for(int i=0;i<stones.size();i++)
 	 	po[stones[i]]=i;
 	 dis[0][1]=1;
 	 if(stones[1]!=stones[0]+1)return false;
 	 dis[1][1]=dis[1][2]=1;
 	 for(int i=1;i<stones.size();i++)
 	 	{
 	 	 dis[i-1].clear();
 	 	 map<int,int>::iterator it;
 	 	 for(it=dis[i].begin();it!=dis[i].end();it++)
 	 	 	{
 	 	 	 if(it->first<=0)continue;
 	 	 	 int np=stones[i]+it->first;
 	 	 	 
 	 	 	 if(po.count(np))
 	 	 	 	{
 	 	 	 	 if(it->first>1)dis[po[np]][it->first-1]=1;
 	 	 	 	 dis[po[np]][it->first]=1;
 	 	 	 	 if(it->first<=n)dis[po[np]][it->first+1]=1;
				}
			}
		}
     if(dis[n-1].size()>0)return true;
     	else return false;
    }
};

  

以上是关于第十七周 Leetcode 403. Frog Jump(HARD) 线性dp的主要内容,如果未能解决你的问题,请参考以下文章

第十七周

第十七周学习进度条

LeetCode403. Frog Jump

[leetcode]403. Frog Jump青蛙过河

[LeetCode] 403. Frog Jump 青蛙跳

第十七周学习进度