![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JavaScript
文章平均质量分 57
Three_ST
学习者
展开
-
数据结构与算法之 leetcode 17. 电话号码的字母组合
【代码】数据结构与算法之 leetcode 17. 电话号码的字母组合。原创 2024-07-15 18:06:03 · 199 阅读 · 0 评论 -
数据结构与算法之 leetcode 78. 子集
【代码】数据结构与算法之 leetcode 78. 子集。原创 2024-06-27 10:54:16 · 130 阅读 · 0 评论 -
数据结构与算法之 leetcode 103. 二叉树的锯齿形层序遍历
【代码】数据结构与算法之 leetcode 103. 二叉树的锯齿形层序遍历。原创 2024-06-11 10:08:36 · 144 阅读 · 0 评论 -
数据结构与算法之 leetcode 513. 找树左下角的值 (BFS) 广度优先
【代码】数据结构与算法之 leetcode 513. 找树左下角的值 (BFS) 广度优先。原创 2024-06-05 19:00:00 · 274 阅读 · 0 评论 -
数据结构与算法之 leetcode 102. 二叉树的层序遍历
【代码】数据结构与算法之 leetcode 102. 二叉树的层序遍历。原创 2024-06-05 08:00:00 · 183 阅读 · 0 评论 -
数据结构与算法之 leetcode 142. 环形链表 II
【代码】数据结构与算法之 leetcode 142. 环形链表 II。原创 2024-05-22 07:19:31 · 163 阅读 · 0 评论 -
数据结构与算法之 leetcode 713. 乘积小于 K 的子数组(双指针)
数据结构与算法之 leetcode 713. 乘积小于 K 的子数组(双指针)原创 2024-05-17 08:00:00 · 171 阅读 · 0 评论 -
leetcode-42. 接雨水(双指针,前缀)
【代码】leetcode-42. 接雨水(双指针,前缀)原创 2024-05-16 08:00:00 · 207 阅读 · 0 评论 -
leetcode-11. 盛最多水的容器(双指针)
leetcode-11. 盛最多水的容器(双指针)原创 2024-05-14 22:52:16 · 195 阅读 · 0 评论 -
数据结构与算法之LeetCode-655. 输出二叉树 - 力扣(LeetCode)
二叉树,dfs,bfs原创 2022-09-24 22:10:02 · 829 阅读 · 0 评论 -
数据结构与算法之LeetCode-1224. 最大相等频率 - 力扣(LeetCode)
使用哈希表map记录某个数字x出现的次数map[x],freq记录出现次数为f的数的数目为freq[f],maxFreq表示最大出现次数。以某个字符nums[i]结尾的数组前缀合要求的充要条件为满足以下三个条件之一:- 最大出现次数maxFreq = 1,那么所有数的出现次数都是一次,随意删除一个数即可符合要求- 所有数的出现次数都是maxFreq或者maxFreq-1,并且最大出现次数的数只有一个,删除一个最大出现次数的数,那么所有数的出现次数都是maxFreq-1- 除开一个数,其他所有数的出现原创 2022-09-20 21:30:10 · 706 阅读 · 0 评论 -
数据结构与算法之LeetCode-640. 求解方程(数学模拟)
- factor表示变量的系数,val表示常量值- 使用系数sign1表示默认系数,解析到等号时,说明解析到等式右边的项,令sign1 = -1- 使用sign2表示项的符号,初识时sign2 = sign1 。解析到‘+’,‘-’,要么相应的更改sign2,使用number记录数字,valid表示number是否有效- 如果解析到变量,那么相应的更改factor- 如果解析到的是常量项,那么相应的更改val- 如果factor=0,说明变量x对方程无影响,然后判断val=0 是否成立,成立则说明原创 2022-08-10 21:16:06 · 501 阅读 · 0 评论 -
数据结构与算法之LeetCode- 1408. 数组中的字符串匹配
1408. 数组中的字符串匹配 - 力扣(LeetCode)- 按照题目要求,想到排序,只有长的才能包含短的- 因此就做条件判断原创 2022-08-06 23:23:24 · 827 阅读 · 0 评论 -
数据结构与算法之LeetCode-241. 为运算表达式设计优先级
一个整数区间[a, b](a < b) 代表着从a到b的所有连续整数,包括a和b。给你一组整数区间intervals,请找到一个最小的集合 S,使得 S 里的元素与区间intervals中的每一个整数区间都至少有2个元素相交。输出这个最小集合S的大小。......原创 2022-07-22 22:11:01 · 987 阅读 · 0 评论 -
数据结构与算法之LeetCode-515. 在每个树行中找最大值(DFS,BFS)
515. 在每个树行中找最大值 - 力扣(LeetCode)DFS,BFS 数据结构与算法BFS参考链接515. 在每个树行中找最大值 - 力扣(LeetCode)在每个树行中找最大值 - 在每个树行中找最大值 - 力扣(LeetCode)【宫水三叶】树的搜索运用题 - 在每个树行中找最大值 - 力扣(LeetCode)在每个树行中找最大值【BFS和DFS】 - 在每个树行中找最大值 - 力扣(LeetCode)...原创 2022-06-24 22:35:32 · 238 阅读 · 0 评论 -
数据结构与算法之LeetCode-467. 环绕字符串中唯一的子字符串(动态规划速度100%)
467. 环绕字符串中唯一的子字符串 - 力扣(LeetCode)DPs是周期性字符串,在s的子串中,只要知道子串的第一个字符或者最后一个字符和子串长度,就可以确定这个子串。例如如果子串以‘d’结尾,长度为3,那么该子串为’bcd’对于同一个字符串结尾的字符,长的那个子串必然包括短的那个。例如’abcd’和’bcd’都以‘d’结尾,’bcd’是‘abcd’的子串var findSubstringInWraproundString = function{p){ const dp = new A原创 2022-05-25 21:38:40 · 118 阅读 · 0 评论 -
前端项目实战之Vue3.0+Three.js+TypeScript+Vite搭建一个设备数字化三维展厅(一)
效果预览项目结构引用组件Vue3.0+Vitenpm create vite npm i @types/node --save-dev vue-routernpm i vue-router --save-dev1.新建一个router目录2.在router目录下创建一个index.ts文件2.1.在目录中添加需要路由的模块2.2.设置路由模式3.在main.ts中引入routerthreejs安装 three.js的type安装 threenpm i原创 2022-05-11 21:09:19 · 2124 阅读 · 0 评论 -
JavaScript进阶之事件处理-Eventloop(微任务,宏任务,promise,async,await)
Javascript 之 Event Loop1^在JavaScript中,任务被分为两种,一种宏任务(MacroTask)也叫Task,一种叫微任务(MicroTask)。事件流事件流描述的是从页面中接受事件的顺序,事件 捕获阶段 处于目标阶段 事件冒泡阶段 addeventListener 最后这个布尔值参数如果是true,表示在捕获阶段调用事件处理程序;如果是false,表示在冒泡阶段调用事件处理程序。1、事件捕获阶段:实际目标div在捕获阶段不会接受事件,也就是在捕获阶段,事件从docum转载 2022-05-02 09:53:59 · 255 阅读 · 0 评论 -
数据结构与算法之LeetCode-38-外观数列(递归和枚举实现 超过97%的提交)
38. 外观数列 - 力扣(LeetCode) (leetcode-cn.com)递归结合题意,实现一个hash表,存储前面的数据,然后大于10的从后面提取/** * @param {number} n * @return {string} */var countAndSay = function(n) { const map = new Map(); map.set(1,'1'); map.set(2,'11'); map.set(3,'21'); m原创 2022-04-06 22:14:23 · 984 阅读 · 0 评论 -
数据结构与算法之LeetCode-125.验证回文串(正则匹配与双指针)
125. 验证回文串 - 力扣(LeetCode) (leetcode-cn.com)##### 解法利用正则表达式 只保留数字和字符let newS = s.toLowerCase().match(/[a-z0-9]+/g);console.log(newS);// ['i','am', 'bill', 'llib', 'ma', ]// 使用match方法在字符串内索引指定值/找到一个或多个正则表达式的匹配// 查找从a到z的字符,并返回匹配值var isPalindrome = f原创 2022-03-07 22:45:34 · 394 阅读 · 0 评论 -
数据结构与算法之LeetCode-72-编辑距离
72. 编辑距离 - 力扣(LeetCode) (leetcode-cn.com)/** * @param {string} word1 * @param {string} word2 * @return {number} */var minDistance = function (word1, word2) { let dp = Array.from(Array(word1.length + 1), () => Array(word2.length + 1).fill(0)原创 2022-02-24 22:16:05 · 628 阅读 · 0 评论 -
数据结构与算法之LeetCode-201-数字范围按位与
201. 数字范围按位与 - 力扣(LeetCode) (leetcode-cn.com)位运算/** * @param {number} left * @param {number} right * @return {number} */var rangeBitwiseAnd = function(left, right) { while(right>left){ right&=(right-1) } return right;};原创 2022-02-13 11:37:17 · 366 阅读 · 0 评论 -
数据结构与算法之LeetCode-300-最长递增子序列
300. 最长递增子序列 - 力扣(LeetCode) (leetcode-cn.com)动态规划两层遍历计算第二层遍历中是否增加/** * @param {number[]} nums * @return {number} */var lengthOfLIS = function(nums) { if(nums.length == 0){ return 0; } let dp = new Array(nums.length).fill(0); dp[0原创 2022-02-05 15:23:28 · 732 阅读 · 0 评论 -
数据结构与算法之 Leetcode-1091-二进制矩阵中的最短路径
1091. 二进制矩阵中的最短路径BFS 广度优先遍历在用广度优先搜索的时候,脑海里面有一张如下的图:先把起始点加入到队列当中,最外层的while控制只要队列中有元素就一直循环取队头元素进行扩散第二个for循环(或者简写方法的while循环)主要是控制当前这一层的元素的扩散每次都是取队头元素进行扩散题目当中可以对当前元素的四面八方进行扩散,所以声明了一个directions数组方便循环扩散/** * @param {number[][]} grid * @return {numb原创 2022-01-28 10:38:47 · 1225 阅读 · 0 评论 -
数据结构与算法之LeetCode-15-三数之和
15.三数之和二分法 先确定一个初始位置再用下一个位置,与最后的位置开始二分搜索不断向中间搜索确定一个终止位置/** * @param {number[]} nums * @return {number[][]} */var threeSum = function(nums) { let ans = []; const len = nums.length; if(nums == null || len < 3) return ans; nums.so原创 2022-01-23 22:26:26 · 633 阅读 · 0 评论 -
数据结构与算法之LeetCode 844. 比较含退格的字符串
844. 比较含退格的字符串使用栈考虑题目要求遇到退格符号,就会删除前一个字符,一般想法是在下一个数字是退格符号时,将前一个符号从字符串中删除,这个时候想到可以使用栈这个结构来保存字符串。/** * @param {string} s * @param {string} t * @return {boolean} */var backspaceCompare = function(s, t) { return build(s)==build(t);};var build = f原创 2022-01-22 13:59:51 · 470 阅读 · 0 评论 -
数据结构算法之二分搜索查找多位矩阵中的数据
74. 搜索二维矩阵在一个m*n维矩阵中搜索某一个给定值,如果存在则返回true,如果不存在则返回 false一次二分法使用解题想法,根据前面 33题的解题思路,使用搜索算法,先计算数组的行数m和n得到起始位 start = 0终止位 end = m*n - 1中间位 mid = start + ((end-start)>>1)判断当前值处于那个区间取出数组的开始和末尾两个数比较中位数与目标值之间的差距(如果处于 start-》mid 区间,处于mid-end区间)逐渐原创 2022-01-05 22:11:40 · 561 阅读 · 0 评论 -
数据结构与算法之Leetcode-深度遍历与广度遍历(DFS&BFS)
DFS(深度优先搜索)和 BFS(广度优先搜索)就像孪生兄弟,提到一个总是想起另一个。然而在实际使用中,我们用 DFS 的时候远远多于 BFS。那么,是不是 BFS 就没有什么用呢?如果我们使用 DFS/BFS 只是为了遍历一棵树、一张图上的所有结点的话,那么 DFS 和 BFS 的能力没什么差别,我们当然更倾向于更方便写、空间复杂度更低的 DFS 遍历。不过,某些使用场景是 DFS 做不到的,只能使用 BFS 遍历。这就是本文要介绍的两个场景:「层序遍历」、「最短路径」。var dfs = funct原创 2021-12-25 23:15:04 · 210 阅读 · 0 评论 -
数据结构与算法之LeetCode-二叉树遍历(JavaScript递归实现)
通过递归实现二叉树的遍历二叉树的前序/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val===undefined ? 0 : val) * this.left = (left===undefined ? null : left) * this.right = (right===undefined ? null : right)原创 2021-12-08 23:11:41 · 735 阅读 · 0 评论 -
LeetCode-1404 将二进制表示减到1的步骤数
1404. 将二进制表示减到 1 的步骤数给你一个以二进制形式表示的数字 s 。请你返回按下述规则将其减少到 1 所需要的步骤数:如果当前数字为偶数,则将其除以 2 。如果当前数字为奇数,则将其加上 1 。题目保证你总是可以按上述规则将测试用例变为 1 。numberProcess(num){ }...原创 2021-11-29 23:13:51 · 151 阅读 · 0 评论 -
LeetCode 88 合并两个有序数组(slice)
array.splice(start[, deleteCount[, item1[, item2[, …]]]])参数start指定修改的开始位置(从0计数)。如果超出了数组的长度,则从数组末尾开始添加内容;如果是负值,则表示从数组末位开始的第几位(从-1计数,这意味着-n是倒数第n个元素并且等价于array.length-n);如果负数的绝对值大于数组的长度,则表示开始位置为第0位。deleteCount 可选整数,表示要移除的数组元素的个数。如果 deleteCount 大于 star.原创 2021-11-12 00:03:34 · 126 阅读 · 0 评论 -
JavaScript之字符串常用函数与方法
String字符串常见操作charAt(x)charCodeAt(x)concat(v1,v2…)fromCharcode(c1,c2)indexOf(substr, [start])lastIndexOf(substr, [start])match(regexp)replace(regexp/substr, replacetext)search(regexp)slice(start, [end])split(delimiter, [limit])substr(start, [l转载 2021-10-31 19:53:45 · 145 阅读 · 0 评论 -
JavaScript之可能会用到的二十个小技巧
1.一句代码实现多维数组扁平化const arr = [1, 2, 3, [4, [5, 6, [7,8]]]];// 方式1:console.log(arr.flat(Infinity));// 方式2:console.log(arr.join().split(','));// 方式3:console.log(arr.toString().split(','));// 在查阅资料中,博主发现原来join()、toString()函数式可以跨越层级的,于是便有了方式2、 3参考链接ht原创 2021-10-29 22:31:30 · 643 阅读 · 0 评论 -
JavaScript基础之实现部分原生与有趣的api(一)
JS实现原生api::: tipES5实现map()方法Array.prototype.MyMap = function(fn,context){ var arr = Array.prototype.slice.call(this); //es5 不需要用...展开 var mappedArr = []; for(var i =0;i<arr.length;i++){ if(!arr.hasOwnProperty(i))continue;原创 2021-10-28 23:17:12 · 310 阅读 · 0 评论 -
浏览器工作原理与实践|16:WebApi setTimeout是怎么实现的
浏览器页面是由消息队列和事件循环系统来驱动的。过setTimeout和XMLHttpRequest这两个 WebAPI 来介绍事件循环的应用。这两个 WebAPI 是两种不同类型的应用,比较典型,并且在JavaScript 中的使用频率非常高。setTimeout它就是一个定时器,用来指定某个函数在多少毫秒之后执行。它会返回一个整数,表示定时器的编号,同时你还可以通过该编号来取消这个定时器。function showName(){ console.log("极客时间")}var timerID转载 2021-10-26 21:34:17 · 178 阅读 · 0 评论 -
JavaScript基础-防抖与节流实现及其使用
防抖与节流函数是一种最常用的 高频触发优化方式,能对性能有较大的帮助。防抖 (debounce):将多次高频操作优化为只在最后一次执行,通常使用的场景是:用户输入,只需再输入完成后做一次输入校验即可。立即防抖触发事件后函数会立即执行,然后n秒内不触发事件才会执行函数的效果function debounce(fn,wait){ let timeout = null; let context = this; let args = arguments; return fu原创 2021-09-26 22:44:18 · 89 阅读 · 0 评论 -
JavaScript 基础之 关于js中的Array.sort()的使用
这里写自定义目录标题怪异行为怪异行为Array.sort((a,b)=>{a - b});在Chrome和Firefox下面执行的结果有些不一致chrome edgeconst months = ['March', 'Jan', 'Feb', 'Dec'];months.sort();console.log(months);// expected output: Array ["Dec", "Feb", "Jan", "March"]const array1 = [1, 30原创 2021-09-17 21:52:56 · 658 阅读 · 0 评论 -
手写JavaScript之实现一个EventBus
EventBus是消息传递的一种方式,基于一个消息中心,订阅和发布消息的模式。设计模式:订阅者发布者模式API设计只能构造一个消息对象on(‘msgName’,func)订阅消息, msgname订阅的消息名称;func订阅的消息one(‘msgName’,func)经订阅一次消息,后订阅的会替换前面订阅的消息emit(‘msgname’,msg)发布消息 msgName;消息名称 msg:发布的消息off('msgName)移除消息代码实现//构造EventBusEventBusC原创 2021-08-31 20:41:10 · 211 阅读 · 0 评论 -
JavaScript实现自定义Event(omit,once,addEventListener)
自定义实现JavaScript中的事件函数,包括AddListener,RemoveListener,Once,Emit等方法function EventEmitter(){ this.events = new Map();}// 实现方法// addEventListenerconst wrapCallback = (fn,once=false)=>({callback:fn,once});EventEmitter.prototype.addListener = function原创 2021-08-30 21:15:26 · 539 阅读 · 0 评论 -
JavaScript知识之正则表达式(RegExp)
描述字面量和构造函数有两种方法可以创建一个 RegExp 对象:一种是字面量,另一种是构造函数。字面量由斜杠(/)包围而不是引号包围。构造函数的字符串参数由引号而不是斜杠包围。以下三种表达式都会创建相同的正则表达式:/ab+c/i; //字面量形式new RegExp('ab+c', 'i'); // 首个参数为字符串模式的构造函数new RegExp(/ab+c/, 'i'); // 首个参数为常规字面量的构造函数当表达式被赋值时,字面量形式提供正则表达式的编译(co.原创 2021-08-24 22:06:34 · 312 阅读 · 0 评论