并查集(Disjoint Sets),直译即不相交集。 等价关系 离散数学中对等价关系的定义:满足自反性、对称性和传递性的关系。 集合A,?(a,b),a,b∈A,满足aRb,则称R为A上的关系,若R满足以上三种性质,则为等价关系。 数学上的定义不必过多解释,只需知道,等价关系是用来对集合中的元素分 ...
分类:
编程语言 时间:
2020-06-01 20:37:19
阅读次数:
62
题目要求 算法分析 按照数组顺序偷,将每个房子累计可能偷到的最大值记录下来, 到第0个房子累计偷到的最大值Value[0] = nums[0] 到第1个房子累计偷到的最大值Value[1] = Max( Value[0],nums[1]) 到第2个房子累计偷到的最大值Value[2] = Max( ...
分类:
其他好文 时间:
2020-05-29 13:40:38
阅读次数:
46
一、算法分析 首先,由中序遍历特定可知,第一个节点是根节点,其次,由前序遍历特定可知,根节点左边是左子树,右边是右子树。因此,对于当前根,能确定其左子树的前序序列、中序序列,也能确定其右子树的前序序列、中序序列。 二、Java实现 题目描述:输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树。 ...
分类:
其他好文 时间:
2020-05-21 09:48:25
阅读次数:
48
题目要求: 算法分析 判断回文串,可使用头尾双指针。因为回文串满足以下条件,若回文串两侧的字符相同,则删去两侧字符后剩下的字符串仍为回文串。 本题的特殊要求是,最多可以删除一个字符,所以双指针向中间行进的过程中可以有一次删除相异字符的机会, 因为头尾指针的两个字符不同,所以可以删掉头字符,或者删掉尾 ...
分类:
其他好文 时间:
2020-05-21 00:25:11
阅读次数:
55
题目要求 算法分析 暴力算法,双循环迭代,即可找到满足条件的数组下标,时间复杂度为O(n2)。 优化算法,可以利用哈希表(C#用字典)在第一次迭代时先存储数组的数据, 这样第二次迭代检索数据时可以利用索引快速查找,实现了用空间换时间。 更优算法,不必要先存储再查找,可以边存数据,边查找。 代码展示( ...
分类:
其他好文 时间:
2020-05-21 00:06:08
阅读次数:
44
算法分析 主定律: Master Theorem 常用算法的时间复杂度 Algorithm Recurrence relationship Run time Binary Search T(n) = T(n/2) + O(1) O(logn) Binary Tree traversal T(n) = ...
分类:
编程语言 时间:
2020-05-19 10:33:19
阅读次数:
58
一、题目描述 实现 pow(x, n) ,即计算 x 的 n 次幂函数。 二、算法分析 class Solution { public double quickMul(double x, long N) { if (N == 0) { return 1.0; } double y = quickMu ...
分类:
编程语言 时间:
2020-05-12 09:32:22
阅读次数:
79
题意描述 简单的不能再简单的差分约束裸题啦。~~(但是我却深感出题人的恶意)~~ 给出一张有 $n$ 个点的图,以及 $m$ 对点的数量关系,问是否可以满足每一对关系。 其中一共有三种数量关系: 1. $a b\geq c$。 2. $a b\leq c$。 3. $a=b$。 算法分析 差分约束. ...
分类:
其他好文 时间:
2020-05-05 00:38:23
阅读次数:
56
https://github.com/hotwater99/practice_datastructure_and_algorithm.git《数据结构与算法分析——C语言描述》机械工业出版社,原书第2版,第7章N=100N=1000N=10000N=100000插入排序 insertion sort... ...
分类:
编程语言 时间:
2020-04-29 20:20:05
阅读次数:
98
算法分析设计实践——最长公共子序列 1.问题 对于序列a和序列b,求其最长公共子序列 2.解析 通过动态规划的方式 dp[i][j] 前i个字符的x和前j个字符的y的最长公共子序列 当a[i] = b[j] 的时候 dp[i][j] = max(dp[i][j] , dp[i - 1][j - 1] ...
分类:
编程语言 时间:
2020-04-29 01:21:34
阅读次数:
71