随笔分类 - 数据结构和算法
摘要:51.52 N皇后问题 描述: 思路: 回溯 53. 最大子序和 描述: 输入: [-2,1,-3,4,-1,2,1,-5,4], 输出: 6 思路: 动态规划。状态变量dp[i]表示当前第i个元素的最大子序和。dp[i]=max(dp[i-1],0)+num[i] 54. 螺旋矩阵 描述: 输入:
阅读全文
摘要:1. 两数之和 描述:nums = [2, 7, 11, 15], target = 9 返回[0, 1] 思路:双指针,一个从前,一个从后。(数组必须排序) 2. 两数相加 描述: 输入:(2 -> 4 -> 3) + (5 -> 6 -> 4) 输出:7 -> 0 -> 8 原因:342 + 4
阅读全文
摘要:LRU:最近最少使用。不管是读还是写,都是对此数据刷新他的时间(时间由双向链表的顺序决定)。 class LRUCache { private class Node{ private int key; private int value; private Node pre; private Node
阅读全文
摘要:首先,假设点是n个,编号为1到n。我们要分治求,则找一个中间的编号mid,先求出1到mid点的最近距离设为d1,还有mid+1到n的最近距离设为d2。这里的点需要按x坐标的顺序排好,并且假设这些点中,没有2点在同一个位置。(若有,则直接最小距离为0了)。 然后,令d为d1, d2中较小的那个点。如果
阅读全文
摘要:1. 递归形式: 1 def Levenshtein_Distance_Recursive(str1, str2): 2 3 if len(str1) == 0: 4 return len(str2) 5 elif len(str2) == 0: 6 return len(str1) 7 elif
阅读全文
摘要:trie人称字典树,又称前缀树,是一个比较高效的字符串检索的存储方式。 trie的应用可以详见leetcode。 DoubleArrayTrie是一个trie的升级版,通过两个数组来实现trie。性能有所提高。 https://www.cnblogs.com/zhangchaoyang/articl
阅读全文
摘要:1. 暴力算法 --bf算法 这是世界上最简单的算法了。 首先将匹配串和模式串左对齐,然后从左向右一个一个进行比较,如果不成功则模式串向右移动一个单位。 假设匹配串文本长度为n,模式串长度为m,最差的情况下,时间复杂度为O(m*n). bf算法每次匹配不成功的时候,前面匹配成功的信息都被当作废物丢弃
阅读全文