算法
文章平均质量分 69
zhangjielong_
这个作者很懒,什么都没留下…
展开
-
LeetCode 403.青蛙过河
LeetCode 403.青蛙过河题目解题思路代码 题目 解题思路 这道题第一眼看上去就能想到要用递归,因此可以先写出递归的实现代码,但别提交因为递归的时间复杂度很高,此题又是困难题,因此暴力递归肯定时间超时。所以为了保证我们的通过率,还应再次基础上进行记忆化搜索来优化算法。 递归第一步先考虑怎么出来,此题结束递归的条件为判断当前位置经过{k-1,k,k+1}步能不能刚好到达最后一颗石子,即stones[i] + (k-1 || k || k+1) == stones[stones.lenth - 1]原创 2021-04-29 13:18:22 · 178 阅读 · 0 评论 -
KMP算法
#@TOC KMP算法 解题思路 KMP算法最常用的用法即:查找一个字符串在另一个字符串中的位置,时间复杂度为O(m+n); KMP算法的核心就是模式串的next[]数组的求法以及所代表的含义。 求next[]就是看模式串的前缀集合与后缀集合的交集中最长元素的长度,且我们规定next[0] = 0;因为第一个字符没有前缀和后缀。 前缀:对于"aba",它的前缀集合为{“a”, “ab”}; 后缀:后缀集合为{“ba”, “a”}。 举个例子: 模式串为t"abcabd" {a}无前后缀,则next[0] =原创 2021-04-22 10:53:46 · 63 阅读 · 0 评论 -
LeetCode 91. 解码方法
LeetCode 91. 解码方法 (Java 回溯+记忆化搜索、动态规划)解题思路解法一:解法二: 解题思路 小小炫耀一下!! 看到这题一开始想到的就是回溯。 递归的结束条件为能遍历完整个字符串即解法可行,返回1。 因为题目说明"06"与"6"并不相等,因此当我们遇到字符’0’时,就结束递归。 如果不是’0’就有两种情况前进1个字符或2个字符,因为单个字符一定能找到对应字母,所以先让其以每次扫描1字符的顺序递归 当进行每次扫描2字符时,先要判断下标是否越界,然后判断这两个字符组成的数字是否字母集合内即小原创 2021-04-22 10:43:40 · 168 阅读 · 0 评论