码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2017-06-10 13:47:37      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:har   tar   false   ble   复杂度   return   线性dp   ret   etc   

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

标签:har   tar   false   ble   复杂度   return   线性dp   ret   etc   

原文地址:http://www.cnblogs.com/heisenberg-/p/6978408.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!