数学部分基础(4)
容斥原理
韦恩图:
整个图形的面积可以用:
(SA + SB + SC)(S_A\ +\ S_B\ +\ S_C)(SA + SB + SC) - ( SA∩B − SA∩C − SB∩C)(\ S_{A\cap B}\ -\ S_{A\cap C}\ -\ S_{B\cap C})( SA∩B − SA∩C − SB∩C) + ( SA∩B∩C)(\ S_{A\cap B\cap C})( SA∩B∩C)
表示,这样可以合理推广得到这样的公式:
$S_1\ \cap \ S_2\ \cap \ …\ \cap S_n\ $ = c
$S_1\ +\ S_2 +\ …\ S_n $ - (S1∩S2+ ... Sn−1∩Sn)(S_{1}\cap S_2 +\ ...\ S_{n-1}\cap S_n)(S1∩S2+ ... Sn−1∩Sn) + (S1∩S2∩S3 + ... +Sn−2∩Sn−1∩Sn)(S_1\cap S_2\cap S_3\ +\ ...\ + S_{n-2}\cap S_{n-1}\cap S_n)(S1∩S2∩S3 ...
JaveScript学习笔记(1)
JavaScript介绍
JavaScript是弱类型语言, Java和C++是强类型语言
JS可以通过src属性引用外部js文件(包括在通过互联网访问到的存放在其他服务器上的js文件)也可以通过在 <script> 标签内书写js代码使用,但只能是二选一的 不能同时使用
JavaScript变量
变量类型
类型
名称
作用
数值类型
number
int, short, long long, float, double
字符串类型
string
String, StringBuilder, char[]
对象类型
object
布尔类型
boolean
函数类型
function
可以使用js提供的函数typeof()得到当前变量的类型
变量的特殊值
特殊值
意义
undefined
未定义 所有js变量未赋予初始值的时候默认值都为undefined
null
空值
NAN
全称:Not A Number 非数字 非数值
使用一个string类型的变量乘一个int类型的变量对js来说语法上是 ...
JavaScript学习笔记(2)
DOM模型
DOM模型全称 Document Object Model 文档对象模型
将页面文档中的标签、属性、文本转换为对象来进行管理
Document对象
Document管理了所有的HTML文档的内容
Document是采取树状结构的进行对象管理,有明显的层级关系
我们可以通过Document访问所有的对象化标签
HTML标签的对象化:
1234567class DOM{ private String id; //id属性 private String tagName; //标签名 private Dom parentNode; //父节点 private List<Dom> children; //子节点 private String innerHTML; //标签起始与结束中间的内容}
通过Document查找文档内标签的方法
方法
描述
getElementById()
返回第一个id符合的标签(只能返回一个)
getElementsByClassName()
返回指定类的对象集合
getEl ...
将普通二叉树转换为完全右倾树
原题链接:LeetCode 114. 二叉树展开为链表
前言:这是 扶明 发布的第一篇题解
欢迎小伙伴们评论区就坐 ٩(๑òωó๑)۶
读题
题意还是很清晰的大意就是需要把一个普通二叉树转化为右斜树,
123456789 1 \ 1 2 / \ \ 2 5 -> 3 / \ \ \3 4 6 4 \ ...
解题思路
树相关的题一般都有很强的递归规律性,
既然要用递归解决那就需要找到与问题相关的最小单位,
第一步: 将树分解为最小操作单位
1234567//先上简单的 两个叉的家伙 ...
巧解压缩遍历次数求二叉树坡度
原题链接:LeetCode 563. 二叉树的坡度
前言:这是 扶明 发布的第二篇题解
欢迎小伙伴们评论区就坐 ٩(๑òωó๑)۶
读题
这是一个简单题,题目大意就是:求出所有节点的左右节点的值的差值,需要注意的三个点:
差值的对象是左右子树的节点值的和
差值是绝对值的
可以是空树
解题思路
第一步:将树分解为最小操作单位
很显然就是单个节点
如果对树分解为最小操作单位还不是很熟悉的可以参考一下这篇题解 将普通二叉树转换为完全右倾树
第二步:确定题解思路
大家的解法一般是使用一个新的函数返回左右子树的节点值的和,
但这里我们其实可以借助原来的树的节点值直接存储其下子树的节点值之和,
不幸地是这会破坏原来节点的数据所以就姑且就称为过河拆桥法吧(๑•̀ㅂ•́)و✧
第三步:确定遍历顺序
解题步骤已经确定了,就是先要求出左右子树的节点的总和才能求出两边的差值,然而求出节点值的总和需要先遍历子树,故应该是遍历后求值这符合后序遍历的条件,
故选择后序遍历法:(1)先遍历子树以将节点值进行叠加处理二叉树节点的值,(2)求出左右节点的差值返回答案
代码:
123456789101 ...
图论与搜索(3)
最小生成树:稀疏图 一般使用朴素版普里姆算法,稠密图一般使用克鲁斯卡尔算法,而堆优化版的普里姆算法一般弃用
最小生成树
朴素普里曼算法
实现:
找到集合外到结果集合的距离最近的点
标记点添加入结果集合
根据新点更新其他点到结果集合的距离
核心算法:
123456789101112131415161718192021int prim(){ memset(dist, 0x3f, sizeof dist); int ans = 0; for(int i = 0; i < n; i++){ int t = -1; for(int j = 1; j <= n; j++){ if(!st[j] && (t == -1 || dist[t] > dist[j])) t = j; } if(i && dist[t] == INF) return INF; i ...
JaveScript学习笔记(3)
jQuery入门(1)
jQuery是指JavaScript和Query(查询),是辅助JavaScript开发的js类库
使用 jQuery 获取页面标签对象
使用js原生函数获取页面标签对象并绑定单击事件
12345678<script type="text/javascript"> window.onload = function (){ const obj_bt = document.getElementById('btnId'); obj_bt.onclick = function (){ console.log('这时js原生的单击事件'); }}</script>
使用jQuery提供的方法获取标签对象并绑定单击事件
123456789101112131415161718<script src="https://cdn.staticfile.org/jquery/1.10.2/jquer ...

.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)
.jpg)