随笔分类 - 算法和数据结构
摘要:斐波那契数列问题和扩展 作者:Grey 原文地址: 博客园:斐波那契数列问题和扩展 CSDN:斐波那契数列问题和扩展 斐波那契数列介绍 斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F
阅读全文
摘要:找到数组中出现特定次数数字的问题 作者:Grey 原文地址: 博客园:找到数组中出现特定次数数字的问题 CSDN:找到数组中出现特定次数数字的问题 问题一 一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数? 牛客-NowCoder_EvenOddTimes LeetCode
阅读全文
摘要:资源限制类问题的常用解决方案 作者:Grey 原文地址: 博客园:资源限制类问题的常用解决方案 CSDN:资源限制类问题的常用解决方案 问题1 32位无符号整数的范围内有 4294967295 个数,现在有一个正好包含 40 亿个无符号整数的文件,可以使用最多 1GB 的内存,怎么找到出现次数最多的
阅读全文
摘要:几种简单排序(冒泡排序,插入排序,选择排序)算法介绍 作者:Grey 原文地址: 博客园:几种简单排序(冒泡排序,插入排序,选择排序)算法介绍 CSDN:几种简单排序(冒泡排序,插入排序,选择排序)算法介绍 说明 主要介绍了几种简单排序算法:『冒泡排序』,『插入排序』,『选择排序』。 冒泡排序 冒泡
阅读全文
摘要:使用 AC 自动机解决文章匹配多个候选词问题 作者:Grey 原文地址: 博客园:使用AC自动机解决文章匹配多个候选词问题 CSDN:使用AC自动机解决文章匹配多个候选词问题 解决的问题 KMP算法用于单个字符串匹配,AC自动机用于文章中匹配多个候选词。 例如: 文章为:"abcdhekskdjfa
阅读全文
摘要:使用树状数组解决数组单点更新后快速查询区间和的问题 作者:Grey 原文地址: 博客园:使用树状数组解决数组单点更新后快速查询区间和的问题 CSDN:使用树状数组解决数组单点更新后快速查询区间和的问题 要解决的问题 在数组arr中,如何快速求数组区间[i...j]的累加和? 如果数组元素值不变,前缀
阅读全文
摘要:划分字母区间问题 作者:Grey 原文地址: 博客园:划分字母区间问题 CSDN:划分字母区间问题 题目描述 LeetCode 763. Partition Labels 思路 显然,如果整个字符串无重复值,那么字符串的字符个数就是最多划分的区间个数。 如果有重复值,假设a字符有重复,那么所有的a必
阅读全文
摘要:无重叠区间问题 作者:Grey 原文地址: 博客园:无重叠区间问题 CSDN:无重叠区间问题 题目描述 题目链接 思路 题目要求至少移除多少个线段可以保证线段不出现重叠区域,比如以下情况: 我们至少需要移走四条线段才能让剩余线段不重叠。移动后的线段如下图 我们可以反过来考虑,即求所有非重叠区域的个数
阅读全文
摘要:求无序数组第 K 大的数 作者:Grey 原文地址: 博客园:求无序数组第 K 大的数 CSDN:求无序数组第 K 大的数 问题描述 无序数组求第K大的数,其中K从1开始算。 例如:[0,3,1,8,5,2]这个数组,第2大的数是5 OJ可参考:LeetCode 215. Kth Largest E
阅读全文
摘要:使用 KMP 算法解决字符串匹配问题 作者:Grey 原文地址: 博客园:使用 KMP 算法解决字符串匹配问题 CSDN:使用 KMP 算法解决字符串匹配问题 要解决的问题 假设字符串str长度为N,字符串match长度为M,M <= N, 想确定str中是否有某个子串是等于match的。返回和ma
阅读全文
摘要:使用 Manacher 算法解决最长回文子串问题 作者:Grey 原文地址: 博客园:使用 Manacher 算法解决最长回文子串问题 CSDN:使用 Manacher 算法解决最长回文子串问题 要解决的问题 求一个字符串最长回文子串是什么。且时间复杂度 O(N) 具体描述可参考: LeetCode
阅读全文
摘要:蓄水池算法的设计和实现 作者: Grey 原文地址: 博客园:蓄水池算法的设计和实现 CSDN:蓄水池算法的设计和实现 要解决的问题 假设有一个源源吐出不同球的机器, 只有装下10个球的袋子,每一个吐出的球,要么放入袋子,要么永远扔掉,如何做到机器吐出每一个球之后,所有吐出的球都等概率被放进袋子里
阅读全文
摘要:跳表的设计和实现 作者:Grey 原文地址: 博客园:跳表的设计和实现 CSDN:跳表的设计和实现 说明 数组的查询速度很快O(1), 但是插入的速度比较慢O(N), 链表的插入速度快O(1), 但是链表的查询速度比较慢O(N)。 而跳表的平均查找和插入时间复杂度都是O(logN),空间复杂度O(N
阅读全文
摘要:合并两个及以上有序链表问题 作者:Grey 原文地址: 博客园:合并两个及以上有序链表问题 CSDN:合并两个及以上有序链表问题 合并两个有序链表 题目描述见:LeetCode 21. Merge Two Sorted Lists 主要思路 首先判断list1和list2的第一个元素,谁小,谁就是最
阅读全文
摘要:删除链表的倒数第 N 个结点 作者:Grey 原文地址: 博客园:删除链表的倒数第 N 个结点 CSDN:删除链表的倒数第 N 个结点 题目描述 题目链接 思路 由于题目要求: Could you do this in one pass? 所以这题的难点在于:不通过获取链表长度的方式来拿需要删除的节
阅读全文
摘要:三数之和问题 作者:Grey 原文地址: 博客园:三数之和问题 CSDN:三数之和问题 题目描述 LeetCode 15. 3Sum 思路 求三个数的和为0的子数组有哪些,我们可以转换一下,考虑一下求两个数之和等于某个target的子数组有哪些, 假设我们已经实现了这个方法: List<List<I
阅读全文
摘要:求字符串中最长无重复字符子串长度问题 作者:Grey 原文地址: 博客园:求字符串中最长无重复字符子串长度问题 CSDN:求字符串中最长无重复字符子串长度问题 题目描述 题目链接 思路 假设必须以i位置字符结尾的字符串最大不重复字串的长度是x,那么所有位置x值中最大的值就是答案。 i位置的x的值取决
阅读全文
摘要:判断两个字符串是否为扰乱字符串 作者:Grey 原文地址: 博客园:判断两个字符串是否为扰乱字符串 CSDN:判断两个字符串是否为扰乱字符串 题目描述 LeetCode 87. 扰乱字符串 思路 初步过滤 如果两个字符串的字符种类和数量不太一样,那么肯定不互为扰乱字符串。 暴力递归方式 f(str1
阅读全文
摘要:最小覆盖子串问题 作者:Grey 原文地址: 博客园:最小覆盖子串问题 CSDN:最小覆盖子串问题 题目描述 LeetCode 76. Minimum Window Substring 思路 滑动窗口 + 欠账表 将目标字符串加入到一个欠账表中,这个欠帐表记录了目标字符串中每个字符出现的次数,因为题
阅读全文
摘要:使用 DFS 和并查集方法解决岛问题 作者:Grey 原文地址: 博客园:使用 DFS 和并查集方法解决岛问题 CSDN:使用 DFS 和并查集方法解决岛问题 题目描述 题目链接 解法一 :DFS 遍历二维数组,设定一个全局变量s,表示岛屿数量,初始化为0,遇到字符'1'就加将岛屿的数量+1(即s+
阅读全文