Loading

摘要: 此篇文章转载自刘毅学长,部分内容按博主理解进行修改 一:背景 给定一个主串(以 S 代替)和模式串(以 P 代替),要求找出 P 在 S 中出现的位置,此即串的模式匹配问题。 Knuth-Morris-Pratt 算法(简称 KMP)是解决这一问题的常用算法之一,这个算法是由高德纳(Donald E 阅读全文
posted @ 2020-04-12 18:46 RioTian 阅读(2879) 评论(0) 推荐(2)
摘要: "首先关于Trie树的知识在另一篇文章中有介绍" 题目描述: 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。 这一天,他们遇到了一本词典,于是小Hi就向小Ho提出了那个经典的问题:“小Ho,你能不能对于每一个我给出的字符串, 阅读全文
posted @ 2020-04-12 18:30 RioTian 阅读(199) 评论(0) 推荐(1)
摘要: "文章出处:五分钟学算法" "Trie树入门题" Trie树 Trie这个名字取自“retrieval”,检索,因为Trie可以只用一个前缀便可以在一部字典中找到想要的单词。 虽然发音与「Tree」一致,但为了将这种 字典树 与 普通二叉树 以示区别,程序员小吴一般读「Trie」尾部会重读一声,可以 阅读全文
posted @ 2020-04-12 16:18 RioTian 阅读(184) 评论(0) 推荐(0)
摘要: 汉诺塔介绍: 汉诺塔 (港台: 河内塔 )是根据一个传说形成的数学问题: 最早发明这个问题的人是 "法国" "数学家" "爱德华·卢卡斯" 。 传说越南河内某间寺院有三根银棒,上串 64 个金盘。寺院里的僧侣依照一个古老的预言,以上述规则移动这些盘子;预言说当这些盘子移动完毕,世界就会灭亡。这个传说 阅读全文
posted @ 2020-04-12 11:37 RioTian 阅读(1616) 评论(0) 推荐(1)
摘要: 给定一个数组,将数组中的元素向右移动 k 个位置,其中 k 是非负数。 示例 1: 示例 2: 说明: 尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。 要求使用空间复杂度为 O(1) 的 原地 算法。 三种解法: 阅读全文
posted @ 2020-04-10 16:36 RioTian 阅读(119) 评论(0) 推荐(0)
摘要: 给定一个字符串,逐个翻转字符串中的每个单词。 示例 1: 示例 2: 示例 3: 说明: 无空格字符构成一个单词。 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。 如果两个单词间有多余的空格,将反转后单词间的空格减少到只含一个。 实现代码: 阅读全文
posted @ 2020-04-10 09:27 RioTian 阅读(135) 评论(0) 推荐(0)
摘要: 给你两个二进制字符串,返回它们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0。 示例 1: 示例 2: 提示: 每个字符串仅由字符 '0' 或 '1' 组成。 1 字符串如果不是 "0" ,就都不含前导零。 阅读全文
posted @ 2020-04-08 11:43 RioTian 阅读(177) 评论(0) 推荐(0)
摘要: 今天是算法和数据结构专题的第1篇文章,我们一起来聊聊动态规划的最小编辑距离。 概述 最小编辑距离(Minimum Edit Distance)本身是的一个NLP中的一个概念,最小编辑距离旨在定义两个字符串之间的相似度(word similarity)。定义相似度可以用于拼写纠错,计算生物学上的序列比 阅读全文
posted @ 2020-04-06 10:29 RioTian 阅读(1682) 评论(0) 推荐(3)
摘要: 给定一组 不含重复元素 的整数数组 nums ,返回该数组所有可能的子集(幂集)。 说明: 解集不能包含重复的子集。 示例: 在它们的指数级解法中,要确保生成的结果 完整 且 无冗余 ,有三种常用的方法: 递归 回溯 基于二进制位掩码和对应位掩码之间的映射字典生成排列/组合/子集(位运算) 位运算解 阅读全文
posted @ 2020-04-03 10:12 RioTian 阅读(126) 评论(0) 推荐(1)
摘要: 给定一个非空整数数组,除了某个元素只出现一次以外,其余每个元素均出现两次。找出那个只出现了一次的元素。 说明: 你的算法应该具有线性时间复杂度。 你可以不使用额外空间来实现吗? 示例 1: 示例 2: 挺简单的,因为楼主之前就常用位运算符就很快解出来了 使用无序map(比map明显加快很多100ms 阅读全文
posted @ 2020-04-02 21:05 RioTian 阅读(187) 评论(0) 推荐(1)
摘要: 原地算法(in place algorithm) 在计算机科学中,一个 原地算法(in place algorithm) 基本上不需要额外辅助的数据结构,然而,允许少量额外的辅助变量来转换数据的算法。当算法运行时,输入的数据通常会被要输出的部分覆盖掉。不是原地算法有时候称为 非原地(not in p 阅读全文
posted @ 2020-04-02 16:50 RioTian 阅读(1936) 评论(0) 推荐(1)
摘要: 记录dalao的位运算骚操作 根据百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机。 给定一个包含 m × n 个格子的面板,每一个格子都可以看成是一个细胞。每个细胞都具有一个初始状态:1 即为活细胞(live),或 0 即为死细胞(dead)。每个细胞 阅读全文
posted @ 2020-04-02 16:28 RioTian 阅读(328) 评论(0) 推荐(0)
摘要: 单链表的反转可以用递归、非递归和栈的方法实现 链表节点定义: 1、栈 2、递归 利用递归,直到链表的最后一个节点,用一个指针指向该节点,作为反转后的链表的头节点 在递归返回的过程中,让该节点的下一个节点指向该节点$(head next next=head)$, 并让该节点指向$NULL$。这样就从链 阅读全文
posted @ 2020-04-01 18:34 RioTian 阅读(291) 评论(0) 推荐(1)
摘要: 冒泡排序(BubbleSort) **基本思想:**两个数比较大小,较大的数下沉,较小的数冒起来。 过程: 比较相邻的两个数据,如果第二个数小,就交换位置。 从后向前两两比较,一直到比较最前两个数据。最终最小数被交换到起始的位置,这样第一个最小数的位置就排好了。 继续重复上述过程,依次将第2.3.. 阅读全文
posted @ 2020-04-01 11:13 RioTian 阅读(50) 评论(0) 推荐(1)
摘要: Dijkstra 算法是处理单源最短路径的有效算法,但它对存在负权回路的图就会失效。这时候,就需要使用其他的算法来应对这个问题,Bellman Ford(中文名:贝尔曼 福特)算法就是其中一个。 Bellman Ford 算法不仅可以求出最短路径,也可以检测负权回路的问题。该算法由美国数学家理查德• 阅读全文
posted @ 2020-03-30 12:04 RioTian 阅读(555) 评论(0) 推荐(1)