leetCode_Frog Jump
来源:互联网 发布:西班牙内战 知乎 编辑:程序博客网 时间:2024/05/21 22:48
题意:一条河被分为k个单元,每个单元也许有石头。一个青蛙从第0个单元开始跳,第一次跳到第1个单元。后序如果他上次跳了k个单元,则下次可以跳k-1,k,k+1个单元。问青蛙能不能跳到对岸。
解法:大体的思路都想到了,用set记录跳到每个石头那一跳的长度,对于每一个石头,看看能不能从它前面的某个石头跳到那个石头上。但是有个细节:用jump[i]代表这个石头最远能跳到哪儿,如果连最远都跳不到某个石头,那就不用再算了。这样会省很多时间。
虽然那个细节没有想到,但是怎么说,已经有进步了,继续努力吧。exciting!
代码:
bool canCross(vector<int>& stones) { unordered_map<int,unordered_set<int>> jump; vector<int> canjump(stones.size(),0); int i,j,k,t=0,size=stones.size(); jump[0].insert(0); for(i=1;i<size;i++) { while(canjump[t]+1<stones[i]-stones[t]) t++; for(j=t;j<i;j++) { k=stones[i]-stones[j]; if(jump[j].count(k-1)||jump[j].count(k)||jump[j].count(k+1)) { jump[i].insert(k); canjump[i]=max(canjump[i],k); } } } return canjump[size-1]>0;}
0 0
- leetCode_Frog Jump
- Jump
- Jump
- Jump
- jump
- Jump
- jump
- Jump
- 1001Jump and Jump...
- 1001 Jump and Jump...
- Jump and Jump...
- About Jump
- 【二分】Jump
- Jump LA4727
- Jump Game
- Jump Game
- bird jump
- Jump Game
- 汇编实现冒泡排序
- USB-HDD 和 USB-FDD 有什么区别?
- eclipse代码误删或者没了怎么办,告诉你个强大的功能
- Lua table.getn() 用法
- eclipse安装activiti插件出现的问题及解决
- leetCode_Frog Jump
- LeetCode—416. Partition Equal Subset Sum
- Linux命令——解决ln -s 软链接产生Too many levels of symbolic links错误
- 单机最大tcp连接数
- 盛大游戏 C++ 视频面试 面经
- 目标跟踪总结
- Android中View的setClickable,setEnable,setFocusable区别
- Toast的正确打开方式——Toast多次显示不消失——toast显示问题
- 十进制的分数转化为七进制的小数