博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【leetcode】403. Frog Jump
阅读量:6835 次
发布时间:2019-06-26

本文共 901 字,大约阅读时间需要 3 分钟。

题目如下:

 

解题思路:我的做法是建立一个字典dic,key为stone,value是一个set,里面存的是从前面的所有stone跳跃到当前stone的unit集合。例如stones=[0,1,2,3]。stone3可以从stone1跳跃两步得到或者从stone2跳跃1步得到,所有dic[3] = (2,1)。那么从stone3可以跳的unit就是[1,2,3] (set中每个元素+1或者-1得到),通过stone3就能到达stone4,stone5,stone6。这样只要按顺序遍历stones,最后判断len(dic[stones[-1]]是否大于0即可。

代码如下:

class Solution(object):    def canCross(self, stones):        """        :type stones: List[int]        :rtype: bool        """        dic = {}        for i in stones:            dic[i] = set()        dic[0].add(1)        for i in stones:            for j in dic[i]:                if j+i in dic:                    dic[j+i].add(j)                if i != 0 and j+i+1 in dic:                    dic[j+i+1].add(j+1)                if  j-1 > 0 and j + i - 1 in dic:                    dic[j + i - 1].add(j - 1)        #print dic        return len(dic[stones[-1]]) > 0

 

转载于:https://www.cnblogs.com/seyjs/p/9177565.html

你可能感兴趣的文章
在安装完成oracle的时候,需要su - oracle,但有时候出现ulimit pize...
查看>>
Hadoop系列之六:分布式文件系统HDFS
查看>>
【VMCloud云平台】SCAP(四)连接公有云(一)
查看>>
第十一集VLAN原理和VTP协议理论讲解
查看>>
做网络主播心得
查看>>
Office Web Apps证书的申请步骤讲解
查看>>
Python中的注释
查看>>
这个冬天,将是共享单车最艰难的时刻
查看>>
windows phone 7 version: ObservableCollectionEx (1)
查看>>
Javascript与框架prototype,JQyuery调研
查看>>
40个有创意的jQuery图片和内容滑动及弹出插件收藏集之三
查看>>
Javascript实现动态菜单添加
查看>>
vs2008打开aspx设计界面无响应问题解决方法
查看>>
How to access the folder of Android
查看>>
8天学通MongoDB——第三天 细说高级操作
查看>>
centos 重启网络服务的方法
查看>>
Aspose.Cells小实例
查看>>
C# winform 获取当前路径
查看>>
groovy execute
查看>>
java IO 解析
查看>>