算法
KylinQAQ
这个作者很懒,什么都没留下…
展开
-
[LeetCode]计数质数 - O(n)筛素数
emmmm太久没做题连筛素数都忘了。又看了一遍算法,记录一下。题目:求小于N的素数的个数。链接:计数质数代码:class Solution {public: int getPrime(int n) { vector<int> prime; vector<bool> check(n,false); fo...原创 2018-10-13 15:18:55 · 281 阅读 · 0 评论 -
后缀数组学习小结
这两天学习了后缀数组,感想是,果然后缀数组比网络流可爱的多,就像字符串比图论可爱的多。有模板真好QVQ。 总结了一下后缀数组的几个要点:一.理解rank[]、sa[]、height[]三个数组。 分别代表所构成的后缀数组str[i](在程序里并不表现出来)排名后的名次、排名后第i位是str[]中的哪一个、str[sa[i]]和str[sa[i-1]]的最长公共前缀长度。...原创 2014-10-01 21:37:03 · 412 阅读 · 0 评论 -
数位DP小结_记忆化搜索版
之前写数位dp是用dp方程递推形式写,接触记忆化搜索版后,发现使用dfs更加清晰明了,思路很顺,代码简洁的多W。首先上模板,以HDU 2089 不要62为例 #define _CRT_SECURE_NO_DEPRECATE#include <stdio.h>#include <string.h>#include <stdlib.h>#...原创 2015-07-28 09:06:09 · 951 阅读 · 0 评论 -
hdu2473 Junk-Mail Filter
//并查集删除点的操作//给每个点i一个映射id[i],初始id[i]=i//当删除i的时候,将id[i]=cnt++//即使用一个额外的新点代替点i在原树中的位置//每次查询、合并操作途经新点#define _CRT_SECURE_NO_DEPRECATE#include <stdio.h>#include <string.h>#inc...原创 2015-08-01 10:03:48 · 303 阅读 · 0 评论 -
种类并查集小结
最近做了两道种类并查集,各种看题解终于弄懂了..种类并查集就是给定的数据分属不同阵营,根据所给的信息把点连到一个或多个集合,然后通过在集合之间的所属关系,推断某两个元素之间的关系。在做这类题目时,一般至少需要两个数组,f记录元素的父节点,dep数组记录某个元素到它根节点这一区间的状态。以POJ 1733题为例Parity gameTime Limit: 1000MS ...原创 2014-08-08 08:57:34 · 627 阅读 · 0 评论 -
[LeetCode] 75.颜色分类
题目颜色分类给定一个包含红色、白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色、白色、蓝色顺序排列。此题中,我们使用整数 0、 1 和 2 分别表示红色、白色和蓝色。输入: [2,0,2,1,1,0]输出: [0,0,1,1,2,2]要求:原地算法复杂度O(n)不使用库函数思路充分利用只有三个元素的特性。方法一 —— 计数填...原创 2018-11-11 13:26:05 · 311 阅读 · 0 评论 -
[LeetCode] 合并K个元素的有序链表、链表排序、复制带随机指针的链表
刷了leetcode 高级题集的链表部分,emmm都不会QWQ。按照网上题解写了一遍,记录一下。前两道排序的题,排序部分很简洁也很模板化。题目中建立dummy节点的操作也值得记录。第三道题是理解链表的好题目。总之三道题都很值得去做并记忆。ヾ(◍°∇°◍)ノ゙23. 合并K个元素的有序链表题目Merge k sorted linked lists and return it as one...原创 2018-12-19 22:49:47 · 202 阅读 · 0 评论 -
[LeetCode] 236. 二叉树的最近公共祖先(LCA)
LCA也忘了… 人生真是艰难qwq。参考博客:二叉树最近公共祖先详解(LCA问题详解题目介绍给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root = [3,5,1...原创 2018-12-23 15:14:02 · 515 阅读 · 0 评论 -
[LeetCode] 最大子序列问题总结
152. 乘积最大子序列乘积最大子序列题目描述给定一个整数数组 nums ,找出一个序列中乘积最大的连续子序列(该序列至少包含一个数)。输入: [2,3,-2,4]输出: 6解释: 子数组 [2,3] 有最大乘积 6。输入: [-2,0,-1]输出: 0解释: 结果不能为 2, 因为 [-2,-1] 不是子数组。思路不用dp数组,维护一个到当前位置i的最大值mmax...原创 2019-01-18 17:28:38 · 352 阅读 · 0 评论