数据库原理-关系代数 数据库原理-关系代数什么是关系代数? 关系代数是数据库查询的理论基础,数据库中所有的查询语句都能够用相对应的关系代数运算来表达 关系代数操作的对象就是关系,它通过对关系进行组合和分割来生成一个新的关系。也就是说,该运算的域没有发生变化,这和我们常用的实数运算是类似的。 离散数学回顾-关系的概念 关系在数据库中对应的是一张张表格,而关系中的元组对应的是表格中的行。从数学定义上来看,数据库中的 2023-01-10 数据库 #数据库 #关系代数
数据库原理-函数依赖 数据库原理-函数依赖为什么要引入函数依赖?函数依赖是数据库设计基础理论的一部分,它能够帮助我们定义属性之间的一部分联系,能够用来确定候选键,定义范式,从而评价关系模式设计的好坏。 函数依赖的定义设R(U),U是R的属性集,X,Y是U的子集,对于X的每一个具体值,都有唯一的Y与之对应,则称X函数决定Y,或者Y函数依赖于X 函数依赖还要满足如下条件: R的一切关系都要满足约束条件(即表格中的子表也要 2023-01-10 数据库 #函数依赖 #数据库
天际线问题 天际线问题(Skyline Problem)题目A city’s skyline is the outer contour of the silhouette formed by all the buildings in that city when viewed from a distance. Now suppose you are given the locations and height 2023-01-10 数据结构与算法 #优先队列
逆向分析-除法优化MagicNumber算法逆向 逆向分析-除法优化MagicNumber算法逆向背景在汇编指令中,除法运算一般使用有符号除法指令idiv或者无符号除法指令div。但是,除法指令的执行周期较长,效率较低,因此编译器会想办法用其他执行周期短的指令来等效替代除法指令。 在C/C++中,除法运算不会保留余数,如果要计算余数可以通过取模运算获得。对于整数除法,C/C++只会保留整数部分,且为向0取整。 C/C 2023-01-10 逆向分析 #C++ #逆向分析 #汇编
全部查找树 全部查找树要求输出所有由数字1~n 组成的二叉搜索树。 eg: n = 2 answer: 1(,2), 2(1) 解决思路我们先从所有数字中取出一个作为根节点,那么剩下的数字按大小划分刚好能各自形成一棵二叉树(没有数字的那半用空指针代替)。因此,我们可以用相同的方式产生该根节点的子树的所有情况,最后把左子树和右子树的情况组合起来,每一种组合都是一棵新树,这样,在遍历完根节点的所有情况之 2023-01-10 #DFS #二叉搜索树
迷宫问题(1)—— 自动生成迷宫地图 迷宫问题(1)—— 自动生成迷宫地图在我学习数据结构期间,多次遇到使用特定的数据结构来实现走出迷宫的方案,因此兴趣使然,在网上找了一些自动生成迷宫地图的方法,发现基本还是使用的走迷宫时的算法,这里简单地设计一下,主要为了方便今后的代码实现和少写出一些bug。 迷宫模型的搭建和选择恰当的数据结构因为生活中常见的迷宫都有以下特点: 迷宫一般都是矩形的或者正方形的。 迷宫一般只有墙作为障碍物,而且迷宫 2023-01-10 数据结构与算法 #DFS #迷宫
快速幂 快速幂理论基础:$$a^bmod\space c = ((a^2)^{b/2})mod\space c, (b = 0(mod\space 2))\\a^bmod\space c = ((a^2)^{b/2} \times a)mod\space c, (b = 1(mod\space 2))$$可以看作是递归函数,递归出口是b 2023-01-10
快速上手CS 快速上手CS常用关键字abstract可以和类、方法、属性、索引器及事件一起使用(成员变量、委托不能使用) 在类声明中使用 abstract 修饰符以指示类只能是其他类的基类 在方法或属性声明中使用 abstract 修饰符以指示此方法或属性不包含实现 抽象类特征 1、抽象类不能实例化 2、抽象类可以包含抽象方法和抽象访问器 3、不能用 sealed 修饰符修改抽象类,这意味着该类不能被继承 4、 2023-01-10 C# #C#
接水问题-短板效应 接水问题-短板效应问题描述在一个二维坐标系中竖立了很多根柱子(从0~n),这些柱子各有一个高度,每两个柱子能形成一个容器,底是距离,高是短的那根柱子,求最大接水量。 解决思路双指针法:头尾指针各一,每次移动矮的那个,直到两者重合。 1234567891011121314int maxValue(int[] height){ int i = 0; int j = height 2023-01-10 数据结构与算法 #数组
和等于K的子数组 和等于K的子数组问题描述给定一个整数数组,返回子数组的个数,这些子数组的和为K。 解决方案法一:可以使用DP来解决,因为dp[i][j] = dp[0][j] - dp[0][i],其中dp表示下标i+1到下标i之间的和。这种算法的时间复杂度为$O(n^2)$。 法二:采用字典(Map)才存储每个值出现的次数 这种方法只需要经历一次遍历,问题的核心是求sum[i][j] =& 2023-01-10 数据结构与算法 #字典