6k5 分钟

# 堆 堆分为大顶堆(大根堆)和小顶堆(小根堆)两种。对于一个堆首先是一颗完全二叉树即只有最后一层不为空且最后一层从左往右是连续的不为空。其次如果是大顶堆,根元素是最大值,子节点比父节点都要小,小顶堆则相反 # 1. 上浮 ​ 每次插入元素时,都往堆最后一个的地方插入元素,为了维护堆的性质则需对插入的元素进行上浮操作。如果是大顶堆的话,插入的元素如果比父节点大就要与父节点交换值。 12345678910//大顶堆function up (index){ let father = Math.floor((index-1)/2) &#
9481 分钟

# 截图 # 1. 画笔,橡皮擦,文字,复制到剪切板的功能展示。 ​ 画笔:可以使用下面的按钮以及输入框改变画笔的大小并在截图区域绘制。 ​ 橡皮擦:清除用画笔绘制的内容同时可以使用下面的按钮以及输入框改变橡皮擦的大小 ​ 文字:在截图框输入文字。 ​ 复制:点击√即可复制到剪切板。 # 2. 退出,撤回,保存的功能展示。 ​ 退出:右键可以退出截图同时截图框可以拖动,截图内容以拖动后的截图框为主。 ​ 撤回:当进入编辑截图时,点击撤回即可清除绘制以及文本等等内容。 ​ 保存:保存按钮将图片保存。 # 便利贴 # 1. 创建,清除便利贴的功能展示。 ​ 可以创建便利贴并在便利
4.8k4 分钟

# 前言 想要实现截图功能,需要设置一个全屏隐藏菜单栏且透明的窗口,在窗口上放上屏幕的截图,然后监听鼠标,获取两次鼠标点击的位置,根据这个位置将图片用 canvas.drawImage 方法将图片写入 canvas 标签。然后再做保存或者写入剪切板的操作。 # 一、基本功能 # 一、进程间通信 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849//渲染进程<el-button type="primary" @cl
9731 分钟

# acm 模式 众所周知,企业机试是要使用 acm 模式的即自行处理输入输出,而不是力扣上的那种核心代码模式。所以之后了解了一下 JavaScript 获取输入输出的方式。 12345678910111213141516/* javaScript Node模式*/const readline = require(&#x27;readline&#x27;)const rl = readline.createInterface(&#123; input:process.stdin, output:process.stdout&
1.2k1 分钟

# electron - 从零搭建一个 electron 项目 # 前言 要想将 vue 引入 electron 中有两种方式,分别为 electron-vue 和 Vue CLI Plugin Electron Builder. 前者虽然出的早,但很久不维护了。因此这边使用后者即 Vue CLI Plugin Electron Builder。首先需要用 vue 的脚手架生成 vue 项目,然后在引入 electron 插件。 # 创建 electron 项目 # 1、创建 vue 项目 12npm i @vue/cli -g //全局安装vue cli脚手架v
11k10 分钟

# 链表进阶 - 论递归在链表中的作用 # 前言 初次接触链表的时候,一方面在改变指针的时候容易出现问题导致链表出现环,当然之后只要涉及改变指针就靠画图理顺指针改变顺序解决了这个问题,另一方面链表与数组不一样的点在于链表无法回退,这时递归登场了,因为递归有回溯的过程,所以只要将链表的下一项当作参数,那么在回溯的时候自然就会进行回退。使用递归能很轻松地解决蛮多链表的问题。以下是一些用递归解决链表的类型题目。 # 一 、反转链表 这类型题目主要是需要在外面设置一个变量储存链表,然后将链表的下一项当作递归的参数,当到达要交换的最后一个节点时就要 return,然后在回溯的部分交换,外面的链表记得在交
5k5 分钟

[toc] # JavaScript 中常用方法 # 一、数组 # 1. 截取数组 slice:获取数组某一区间的元素并形成新的数组将其返回,不改变原数组. splice:删除数组元素同时可以插入元素,会改变原数组. slice 方法接收两个参数都为下标,区间为左闭右开。如果省略第一个参数则从第一个元素开始获取如果省略第二个参数则会一直获取到最后一个值。这两个参数都可以是负数。当参数为负数时,最后一个值的下标为 - 1 并以此往前依次减 1. 如果未获取到元素则返回空数组 splice 方法接收三个参数,第一个参数是要删除值的下标不可省略另外这个参数同样也可以是负数,第二个参数的删除值
2.3k2 分钟

[toc] # 链表基础 # 一、链表操作 # 1. 力扣上的链表构造函数 12345678//注意这是力扣上的构造函数不是JavaScript内置函数function ListNode(val, next) &#123; this.val = (val===undefined ? 0 : val) this.next = (next===undefined ? null : next)&#125;let node = new ListNode(0,head
3.2k3 分钟

[toc] # 二叉树基础 # 一、二叉树种类 # 1. 满二叉树 除最后一层有两个子节点外,最后一层没有子节点,如果某个满二叉树有 k 层则该满二叉树有 2 的 k 次方 - 1 个节点。 # 2. 完全二叉树 最后一层如果有缺的子节点则该子节点为右侧的子节点。如果某个完全二叉树有 k 层,则该完全二叉树则有 2 的 k-1 次方到 2 的 k 次方 - 1 个节点。满二叉树是特殊的完全二叉树 # 3. 二叉搜索树 二叉搜索树中某个节点的左节点值小于该节点,右节点值大于该节点 # 4. 二叉平衡树 在二叉搜索树的条件下,每一个节点的左子树与右子树的高度差不大于一,二叉平衡树是特殊的二叉搜索
3.1k3 分钟

# 正则学习记录 [toc] # 一、正则表达式的创建 # 1. 字面量创建 1const a = /a/igm //i表示忽略大小写,g表示全局匹配,m表示多行匹配 # 2. 构造函数创建 123cosnt a = &#x27;a&#x27;const b = new RegExp(&#x27;a&#x27;) 或者 b = new RegExp(a)//这里的b打印结果与上面字面量创建的a一致// RegExp有两个参数,第一个参数传入一个