一周LeetCode习题精选——动态规划(2)
LeetCode 55 链接:Jump Game 本题可以使用动态规划解决。动态规划主要有四个步骤: 使用递归回溯方法 使用备忘录方法优化(自顶向下的动态规划) 消除递归方法(自底向上的动态规划) 使用其他方法优化时间/空间复杂度 ...
LeetCode 55 链接:Jump Game 本题可以使用动态规划解决。动态规划主要有四个步骤: 使用递归回溯方法 使用备忘录方法优化(自顶向下的动态规划) 消除递归方法(自底向上的动态规划) 使用其他方法优化时间/空间复杂度 ...
LeetCode 198 链接:House Robber 本题使用动态规划解决。首先需要分析题目的递归关系:当强盗到达第i间房屋时,他可以选择抢,也可以选择不抢。如果抢劫这间房屋,根据题目要求,他必定没有抢劫第i-1间房屋,但他可能抢劫第i-2间房屋。如果不抢劫第i间房屋,那么他可能抢劫第i-1间房屋。这两个选择造成抢劫得来金钱的不同。设rob(i)为前i间房屋抢劫得来金钱的最大值,第一种需要计算前i-2间房屋抢劫金钱的最大值加上第i间房屋抢劫的金钱。第二种只需要计算前i-1间房屋抢劫金钱的最大值。两者需取其中最大值,由此得出递归关系: ...
LeetCode 208 链接:Implement Trie (Prefix Tree) 本题要求构造一个前缀树。前缀树是数据结构中树的一种,用于检索字符串数据集中的值,在自动完成、拼写检查、IP路由等方面都有应用。前缀树节点有两个字段:一个链接到字符串的下一个字符节点child,另一个为布尔值is_end,判断指定节点是否已到末尾。这里需要说一下Python的collections.defaultdict()这个方法,此方法构建了一个类似字典的对象,与普通字典不同的是,在查找字典中不存在key时,普通字典会报错,而defaultdict不会返回错误,而是返回一个默认值。本例会返回一个TrieNode节点,这样省去了在功能方法中新建节点的步骤。本题要求实现三个前缀树的三个功能:插入单词、搜索给定单词是否存在于前缀树以及搜索给定单词是否是前缀树中单词的前缀。 ...
这几天学习了Python爬虫有关的知识,自己做了一个简单的实例:爬取熊猫直播某板块的主播信息。本实例使用Requests +BeautifulSoup和爬虫框架Scrapy两种方法。 BeautifulSoup可以从HTML或XML文件中提取数据,Requests则用于读取网络资源。虽然Python内置的urllib模块也可以读取网页,但Requests使用起来要更方便。首先需要确定要爬取的URL,这里我选择了熊猫直播的“守望先锋”板块,网址为https://www.panda.tv/cate/overwatch。先来看一下网页的源码: ...
这篇博文分享一下我在毕业设计开发时用到的一些开源库和技术。 Aria 用于实现WebView的文件下载功能,我们知道原生的WebView是没有下载功能的,所以需要自己实现。我并没有这方面的知识,从网上看了一些资料后,最终选择了Aria,使用效果还是不错的。 BRVAH 全名BaseRecyclerViewAdapterHelper,是一个RecyclerAdapter框架。我的项目使用了很多RecyclerView,而定义Adapter是个很头疼的事情,太多重复的工作。项目使用此框架后精简了很多代码,此外它还有Item点击事件、列表加载动画、拖拽/滑动删除等一系列实用的功能。 ...