目录
离散数学:
第 7 章 : 二元关系.
有序对与笛卡尔积:
定义: 集合 A x 集合 B (相互映射 , 元素个数为 n * m) . 得到的集合中的元素称为 "有序对" (我更喜欢叫它 : 键值对.
性质: 定义 集合 A 和 集合 B.
1. 集合 A 与 空集 的笛卡尔积 是空集 (空集 与 集合 A 的笛卡尔积 是空集).
2.笛卡尔积 不满足 交换律 ( A x B != B x A.
3.笛卡尔积 不满足 结合律 ( (A x B) x C != A x (B x C).
4.笛卡尔积运算对并 和 交运算满足分配律. (不论前后分配.
5.
幂集: P(A) 的元素是 A中元素的子集 所构成的集合.
二元关系:
定义: 空集 或者 元素都是有序对.
性质:
A x B的任何子集所定义的二元关系称作 从A到B的二元关系. 当 A = B 时称为A上的二元关系.
全域关系: .
恒等关系:
关系运算:
domR: 以前键构成的集合.
ranR: 以后键构成的集合.
fldR: 元素的总集合.
逆关系(): 前后键调换位置.
右复合(): <x , t> 与 <t , y> -> <x , y>. (从左往右传导.
限制(): 将前键的元素限制在集合A中.
像(): 在限制的基础上取后键为答案.
数据库知识点:
数据更新:
插入元组:
insert into "表名" (col ~ 列名)
values (对应列名赋值)
--eg: 将学生张成名的信息插入到student表中
insert into student
values('201215126' , '张成名' , '男' , 18 , 'CS')
插入子查询结果:
insert into "表名1" (col ~)
select col ~ --一一对应
from "表名2"
--where
--group by
修改元组:
updata "表名"
set col1 = any
--were col2
--将符合where条件的元素的 col1 改为 any (col1可以等于col2)
where col2 in (
select
from
where
)
--where可以蕴含子查询
删除元组:
delete from "表名"
where col = any
--删除该表中col值为any的元组
--同样可以没有where子句(即删除表) , where可以蕴含子查询
视图:
基本概念: 建立一个可以使用的(组合)表 , 修改视图就是在修改基本表.
建立视图:
create view "取名" (视图的col名)
as
--查询部分 , 查询的结果就是视图
select col ~ --(与视图的col名一一对应
from (可以是存在的基本表,也可以是已经建立的视图
where
--with check option (效果: 在插入,修改,删除操作时,使where条件依然满足.
视图的查询和基本表一致.
视图的更新: 更新方式和更新基本表一样 , 但是并不是所有的视图都可以更新. (不存在基本表中的不可更新.
leetcode每日一题:
一道简单题 , but 一题多解 , 思维发散.
解法一: 调用函数库 sqrt .
class Solution {
public:
bool isPerfectSquare(int num) {
int x = sqrt(num);
return x * x == num;
}
};
解法二: 纯暴力 (不会还有人不会暴力吧
class Solution {
public:
bool isPerfectSquare(int num) {
long long ide = 1;
while(ide * ide <= num){
if(ide * ide == num) return true;
ide ++;
}
return false;
}
};
解法三: 二分找符合的数 , 毕竟1 到 num 是线性关系 , 所以二分寻找符合的数是一定可以的.
class Solution {
public:
bool isPerfectSquare(int num) {
long long left = 1 , right = num;
while(left <= right){
long long mid = (left + right) >> 1;
if(mid * mid == num) return true;
if(mid * mid > num) right = mid - 1;
if(mid * mid < num) left = mid + 1;
}
return false;
}
};
解法四: 分解质因数 , 判断分解出的质因数是否都为偶数 , 若为偶数则是平方数 , 反之不是 (这很好理解的吧?? 偶数的质因数可以均分成两部分 , 进而构造成两个相同的数.
class Solution {
public:
bool isPerfectSquare(int num) {
map<int , int>nums;
for(long long i = 2;i * i <= num;i ++) {
while(!(num % i)) nums[i] ++ , num /= i;
}
if(num > 1) nums[num] ++;
for(auto ao : nums) if(ao.second & 1) return false;
return true;
}
};
解法五: 数学知识解题 -> 平方数满足首项为 1 , 差值为 2 的等差数列的前n项和. ( ide 的平方 就是前n项和的 第ide项.
class Solution {
public:
bool isPerfectSquare(int num) {
int ide = 1;
while(num > 0) num -= ide , ide += 2;
return !num;
}
};
儿时凿壁偷光 宿昔不梳一苦十年寒窗.Day Thirteen -- 青山檐下雨.