
算法
帕特尼的小虾米
这个作者很懒,什么都没留下…
展开
-
算法 - 字符串匹配 - Rabin-Karp算法
Rabin-Karp算法介绍Rabin-Karp字符串匹配算法与朴素字符串匹配算法类似,都要比较每一个字符串,不同的是Rabin-Karp算法对字符串做预处理,将字符转换为进制数并取模。预处理时间O(m), 匹配时间是O((n - m + 1) m),m是匹配字符串长度,n是目标字符串长度。RaBin-Karp算法:假设待匹配字符串的长度为M,目标字符串的长度为N(N>=M)...原创 2019-02-28 11:34:43 · 842 阅读 · 0 评论 -
Python 二叉树的非递归遍历
二叉树类实现class BinTNode: def __init__(self, dat, left = None, right = None): self.data = data self.left = left self.right = right统计树中节点个数def count_BinTNodes(t): if...原创 2019-05-16 20:39:49 · 1298 阅读 · 0 评论 -
Python 数据结构 优先队列
基于list实现的优先队列class PrioQueueError(ValueError): passclass PrioQue: def __init__(self, elist=[]): self._elems = list(elist) # 1.对实参表做拷贝,避免共享。2.使构造函数的实参可以使任何可迭代对象。 ...原创 2019-05-16 17:07:12 · 398 阅读 · 0 评论 -
算法 - 字符串匹配 - KMP算法
先复习一下朴素串匹配算法:#朴素串匹配算法def navie_matching(t, p): m, n = len(p), len(t) i, j = 0, 0 while i < m and j < n: # i == m 说明找到匹配 if p[i] == t[j]: # 字符相同, 考虑下一对字符 i,...原创 2019-05-10 17:42:32 · 187 阅读 · 0 评论 -
Python 迷宫求解和状态空间搜索问题
迷宫问题,给定一个迷宫图,包括一个入口与一个出口,要求在图中找到一条从入口到出口的路径。映射到二维0/1矩阵,0表示空位置,1表示障碍辅助结构dirs = [(0, 1), (1, 0), (0, -1), (-1, 0)]def mark(maze, pos): # 给迷宫maze的位置pos标2 表示“到过了” maze[pos[...原创 2019-05-15 15:09:03 · 1236 阅读 · 0 评论 -
Python 数据结构 栈与队列
栈先设置栈下溢异常class StackUnderflow(ValueError): # 栈下溢 pass栈的顺序表实现class SStack(): # 基于顺序表技术实现的栈类 def __init__(self): # 用list对象 _elems存储栈中元素 self._el...原创 2019-05-14 22:08:16 · 232 阅读 · 0 评论 -
Python 数据结构 链表实现
单链表类 与 循环单链表类 的实现 以及Josephus问题#!/usr/bin/env python# -*- coding: utf-8 -*-class LNode: def __init__(self, elem, next_ = None): self.elem = elem self.next = next_class Lin...原创 2019-05-05 18:10:27 · 276 阅读 · 0 评论 -
leetcode 207. 课程表
现在你总共有 n 门课需要选,记为0到n-1。在选修某些课程之前需要一些先修课程。例如,想要学习课程 0 ,你需要先完成课程 1 ,我们用一个匹配来表示他们: [0,1]给定课程总量以及它们的先决条件,判断是否可能完成所有课程的学习?示例 1:输入: 2, [[1,0]] 输出: true解释:总共有 2 门课程。学习课程 1 之前,你需要完成课程 0。所以这是可能...原创 2019-04-06 22:11:37 · 150 阅读 · 0 评论 -
leetcode 140. 单词拆分 II(回溯法 +前缀树)
给定一个非空字符串 s 和一个包含非空单词列表的字典 wordDict,在字符串中增加空格来构建一个句子,使得句子中所有的单词都在词典中。返回所有这些可能的句子。说明:分隔时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。示例 1:输入:s = "catsanddog"wordDict = ["cat", "cats", "and", "sand", "dog"]...原创 2019-03-19 14:04:16 · 517 阅读 · 0 评论 -
leetcode 208. 实现 Trie (前缀树)
题目描述:实现一个 Trie (前缀树),包含insert,search, 和startsWith这三个操作。示例:Trie trie = new Trie();trie.insert("apple");trie.search("apple"); // 返回 truetrie.search("app"); // 返回 falsetrie.startsWi...原创 2019-03-15 16:02:27 · 271 阅读 · 0 评论 -
Python 图算法
inf = float("inf") # inf的值大于任何float类型的值class GraphError(ValueError): pass邻接矩阵实现class Graph: def __init__(self, mat, unconn=0): vnum = len(mat) for x in mat: ...原创 2019-05-22 21:26:19 · 816 阅读 · 0 评论