栈(Stack)
定义
栈是一种特殊的线性表,特殊之处在于它只允许在表的一端进行添加和删除操作。
先进后出
实现
1 | function Stack() { |
应用
107.二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7],
1 | 3 |
返回其自底向上的层次遍历为:
1 | [ |
实现
1 | /* |
栈是一种特殊的线性表,特殊之处在于它只允许在表的一端进行添加和删除操作。
先进后出
1 | function Stack() { |
107.二叉树的层次遍历 II
给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)
例如:
给定二叉树 [3,9,20,null,null,15,7],
1 | 3 |
返回其自底向上的层次遍历为:
1 | [ |
实现
1 | /* |
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)。
1 | function ListNode(value) { |
236.二叉树的最近公共祖先
给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。
百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”
例如,给定如下二叉树: root = [3,5,1,6,2,0,8,null,null,7,4]
1 | 3 |
示例 1:
1 | 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 1 |
示例 2:
1 | 输入: root = [3,5,1,6,2,0,8,null,null,7,4], p = 5, q = 4 |
实现
1 | /* |
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。
先进先出
1 | function Queue() { |
将一个按照升序排列的有序数组,转换为一棵高度平衡二叉搜索树。
本题中,一个高度平衡二叉树是指一个二叉树每个节点 的左右两个子树的高度差的绝对值不超过 1。
示例:
1 | 给定有序数组: [-10,-3,0,5,9], |
实现
1 | /* |
type-check-plus是一个JavaScript库用于检测输入的值是否符合定义。
例如:
1 | const objValue = { |
我们开发了一个快速构建可视化大屏程序的PAAS平台,该平台支持用户采用一些拖拽修改的方式快速生成大屏引用。因此需要对用户输入的数组进行合法性检测,剔除异常数据保留正确数据。
由于npm的type-check字段被占用,并且npm已有的相关库并不能满足我们的需要,所以决定自己开发一个变量类型检测库,命名为type-check-plus。
该方案为Specific Runners
1、在第三方服务器安装GitLab Runner 及相关脚本执行环境(以Node.js为例)
2、获取项目token及following URL
3、[注册GitLab Runner](https://docs.gitlab.com/runner/# register-gitlab-runner)
4、修改GitLab Runner
5、编写 .gitlab-ci.yml
集成
1 | async function async1() { |
1 | $nav-color: # F90; |
1 | @mixin rounded-corners($normal) { // 混合器 引用这个变量重用大段代码 |
$link-color
与$link_color
指向同一个变量$nav-color: # F90; !default
如果这个变量接下来被声明赋值了,那就用它声明的值,否则就用这个默认值。 1 | # content { |
编译后
1 | # content article h1 { color: # 333 } |
css
有一个特别不常用的特性,即@import
规则,它允许在一个css
文件中导入其他css
文件。然而,后果是只有执行到@import
时,浏览器才会去下载其他css
文件,这导致页面加载起来特别慢。
sass
也有一个@import
规则,但不同的是,sass
的@import
规则在生成css
文件时就把相关文件导入进来。这意味着所有相关的样式被归纳到了同一个css
文件中,而无需发起额外的下载请求。
1 | // 嵌套导入 |
但在下列三种情况下会生成原生的CSS@import
,尽管这会造成浏览器解析css
时的额外下载:
.css
结尾;CSS
的url()
值。1 | body { |