08 2022 档案

摘要:给定一个长度为 n 的链表 head 对于列表中的每个节点,查找下一个 更大节点 的值。也就是说,对于每个节点,找到它旁边的第一个节点的值,这个节点的值 严格大于 它的值。 返回一个整数数组 answer ,其中 answer[i] 是第 i 个节点( 从1开始 )的下一个更大的节点的值。如果第 i 阅读全文
posted @ 2022-08-31 15:58 蓓蕾心晴 阅读(33) 评论(0) 推荐(0) 编辑
摘要:方式一:map实现 class LRU { constructor(size) { this.size = size; this.cache = new Map(); } get(key) { if (this.cache.has(key)) { const value = this.cache.g 阅读全文
posted @ 2022-08-30 18:28 蓓蕾心晴 阅读(232) 评论(0) 推荐(0) 编辑
摘要:二叉树的右侧视图,使用层序遍历实现,需要先获取带有层级的二维数组,再将数组中每个数组的最后一个值获取到,即为右侧视图。 给定一个二叉树的 根节点 root,想象自己站在它的右侧,按照从顶部到底部的顺序,返回从右侧所能看到的节点值。 示例 1: 输入: [1,2,3,null,5,null,4]输出: 阅读全文
posted @ 2022-08-30 14:19 蓓蕾心晴 阅读(131) 评论(0) 推荐(0) 编辑
摘要:/** * Definition for a binary tree node. * function TreeNode(val, left, right) { * this.val = (val undefined ? 0 : val) * this.left = (left undefined 阅读全文
posted @ 2022-08-30 10:47 蓓蕾心晴 阅读(484) 评论(0) 推荐(0) 编辑
摘要:var inorderTraversal = function (root) { // 迭代 if (!root) { return []; } let res = []; let stack = []; while (stack.length > 0||root) { // 循环遍历,将所有左节点 阅读全文
posted @ 2022-08-30 00:45 蓓蕾心晴 阅读(219) 评论(0) 推荐(0) 编辑
摘要:// 解析获取的 url 中的参数为对象 function parseQueryString(url) { if (!url) { return {}; } const qsArr = decodeURIComponent(url).split("?")[1].split("&"); return 阅读全文
posted @ 2022-08-29 23:31 蓓蕾心晴 阅读(158) 评论(0) 推荐(0) 编辑
摘要:var postorderTraversal = function (root) { // 迭代,前序遍历是根左右,后序为左右根,将前序实现为根右左,再将数组反转即得后序遍历,左右根 // if (!root) { // return []; // } // let res = []; // let 阅读全文
posted @ 2022-08-29 15:37 蓓蕾心晴 阅读(148) 评论(0) 推荐(0) 编辑
摘要:递归要比迭代更耗时一些。 // 前序遍历:根左右 // 中序遍历:左根右 // 后序遍历:左右根 var preorderTraversal = function (root) { if (!root) { return []; } // 迭代 let res = []; let stack = [ 阅读全文
posted @ 2022-08-29 13:44 蓓蕾心晴 阅读(147) 评论(0) 推荐(0) 编辑
摘要:substr 和 substring 都为截取字符串部分字符 substr(start, length) , 第一个参数为起始位置,第二个参数为从起始位置开始截取的长度 第一个参数可为负数 substring(start,end),第一个参数和第二个参数分别为起始位置和结束位置,截取的字符串不包括结 阅读全文
posted @ 2022-08-28 22:43 蓓蕾心晴 阅读(225) 评论(0) 推荐(0) 编辑
摘要:写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下: F(0) = 0, F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得 阅读全文
posted @ 2022-08-28 22:09 蓓蕾心晴 阅读(34) 评论(0) 推荐(0) 编辑
摘要:acorn内部的实现 https://zhuanlan.zhihu.com/p/149323563 编译原理之词法与语法 https://zhuanlan.zhihu.com/p/149793021 typescript编译原理 https://zhuanlan.zhihu.com/p/499859 阅读全文
posted @ 2022-08-26 16:53 蓓蕾心晴 阅读(33) 评论(0) 推荐(0) 编辑
摘要:看了一些编译原理的博文,对词法和语法的理解: 词法:是对一堆代码的一种提取,语法:是理解提取后的代码分别代表了什么意思,并赋予对应的意义,从而构建 AST 抽象语法树。 阅读全文
posted @ 2022-08-26 16:45 蓓蕾心晴 阅读(151) 评论(0) 推荐(0) 编辑
摘要:// keyBy function keyBy(list, by) { return list.reduce((acc, x) => { acc[by(x)] = x; return acc; }, {}); } console.log( keyBy( [ { id: 1, name: "beile 阅读全文
posted @ 2022-08-25 10:39 蓓蕾心晴 阅读(363) 评论(0) 推荐(0) 编辑
摘要:// 几个要素: // 1.维护一个 events 对象 // 2.对象上每个事件为 key,值为事件执行函数,为数组 // 3.维护三个方法: // 触发事件:emit,执行事件所绑定的方法(on绑定的) // 监听事件:on,哪里需要在监听到事件的时候执行一些动作,就在那里绑定,可能有多个待执行 阅读全文
posted @ 2022-08-24 13:42 蓓蕾心晴 阅读(225) 评论(0) 推荐(0) 编辑
摘要:// 无限累加 sum // 一共做两件事: // 1. 调用一次返回当前计算函数本身,该函数主要作用之一为合并多次调用传的不同数量的参数 // 2. 给返回的函数增加 valueOf 最终计算结果的方法 function sum(...args) { // 定义返回的闭包函数 const f = 阅读全文
posted @ 2022-08-24 01:07 蓓蕾心晴 阅读(208) 评论(0) 推荐(0) 编辑
摘要:// add 异步相加 function add(a, b) { return new Promise((resolve, reject) => { setTimeout(() => { resolve(a + b); }, 1000); }); } // 传入不定长度的数组,与 add 函数,对数 阅读全文
posted @ 2022-08-23 17:12 蓓蕾心晴 阅读(658) 评论(0) 推荐(0) 编辑
摘要:$1,$2是表示的匹配的小括号里的内容 $1是匹配的第一个小括号里的 ,$2是匹配的第2个小括号里的 // 将yyyy-mm-dd格式转换为年月日格式 function chDate1date(str){ var reg =/(\d{4})\-(\d{2})\-(\d{2})/; return st 阅读全文
posted @ 2022-08-22 18:09 蓓蕾心晴 阅读(1163) 评论(0) 推荐(0) 编辑
摘要:function once(fn) { let flag = false; let result = null; return function (...args) { if (flag) { return result; } flag = true; result = fn.call(this, 阅读全文
posted @ 2022-08-22 17:41 蓓蕾心晴 阅读(451) 评论(0) 推荐(0) 编辑
摘要:// arr:要查找的数组,predict:要查找的 key 字符串 或 [key,value] 数组,或 对象{key,value},fromIndex:要从数组中第一个元素开始查,默认为 0 function find(arr, predict, fromIndex = 0) { // 定义查找 阅读全文
posted @ 2022-08-22 17:13 蓓蕾心晴 阅读(765) 评论(0) 推荐(0) 编辑
摘要:// 自己实现function chunk(list, size) { let len = list.length; if (size < 1 || !len) { return []; } if (size > len) { return [list]; } // 最终返回数组 let res = 阅读全文
posted @ 2022-08-22 16:04 蓓蕾心晴 阅读(888) 评论(0) 推荐(0) 编辑
摘要:function isEqual(x, y) { // 如果全等则直接返回 true if (x y) { return true; } else if ( typeof x "object" && x !== null && typeof y "object" && y !== null ) { 阅读全文
posted @ 2022-08-22 11:08 蓓蕾心晴 阅读(90) 评论(0) 推荐(0) 编辑
摘要:两种实现方案实现原理:1. 如果传入的 function 为空,则直接返回 参数数组2. 如果传入的 function 只有一个,则直接调用第一个3. 否则从右向左依次执行4. 原理为:compose中传入多个函数,会依次从右向左执行,将右面函数的执行结果作为参数传入左边一个函数中 // 方式一 f 阅读全文
posted @ 2022-08-22 00:13 蓓蕾心晴 阅读(281) 评论(0) 推荐(0) 编辑
摘要:Object.create(),浅拷贝 const clone = Object.create( Object.getPrototypeOf(obj), Object.getOwnPropertyDescriptors(obj) ); Object.assign(targetObj,sourceOb 阅读全文
posted @ 2022-08-21 19:05 蓓蕾心晴 阅读(997) 评论(0) 推荐(0) 编辑
摘要:参考链接:https://blog.csdn.net/lgno2/article/details/124996065 对象属性的可枚举和不可枚举 for in 循环只能遍历可枚举的,如果含有 Symbol ,则无法遍历,会报错 Uncaught TypeError: obj is not itera 阅读全文
posted @ 2022-08-19 19:17 蓓蕾心晴 阅读(54) 评论(0) 推荐(0) 编辑
摘要:reduce 方案 let myArray = ['a', 'b', 'a', 'b', 'c', 'e', 'e', 'c', 'd', 'd', 'd', 'd'] let myArrayWithNoDuplicates = myArray.reduce(function (previousVa 阅读全文
posted @ 2022-08-19 17:28 蓓蕾心晴 阅读(20) 评论(0) 推荐(0) 编辑
摘要:// 判断对象的方法 let obj6 = { a: 1, b: 2 }; // 1. typeof console.log(typeof obj6 "object"); // 2. instanceof console.log(obj6 instanceof Object true); // 3. 阅读全文
posted @ 2022-08-18 16:33 蓓蕾心晴 阅读(118) 评论(0) 推荐(0) 编辑
摘要:概念 1. 防抖(debounce):触发高频事件后 n 秒内函数只会执行一次,如果 n 秒内高频事件再次被触发,则重新计算时间举例:就好像在百度搜索时,每次输入之后都有联想词弹出,这个控制联想词的方法就不可能是输入框内容一改变就触发的,他一定是当你结束输入一段时间之后才会触发。 2.节流(thro 阅读全文
posted @ 2022-08-18 14:46 蓓蕾心晴 阅读(948) 评论(0) 推荐(0) 编辑
摘要:console.log("array flat"); // 1. 因为只有数组才有 concat 方法,所以这里必须写入初始值 空数组 只能打平一层 // const flat = (list) => list.reduce((a, b) => a.concat(b), []); // 2. 直接用 阅读全文
posted @ 2022-08-18 14:14 蓓蕾心晴 阅读(107) 评论(0) 推荐(0) 编辑
摘要:1. Array.isArray([]) // true 2. Object.prototype.toString.call([]) // '[object Array]' 3. [].constructor Array // true 4. [] instanceof Array // true 阅读全文
posted @ 2022-08-18 01:20 蓓蕾心晴 阅读(227) 评论(0) 推荐(0) 编辑
摘要:function reduce(list, fn, ...init) { let prev = init.length > 0 ? init[0] : list[0]; for (let i = init.length > 0 ? 0 : 1; i < list.length; i++) { pre 阅读全文
posted @ 2022-08-18 01:00 蓓蕾心晴 阅读(69) 评论(0) 推荐(0) 编辑
摘要:// promise.all function promiseAll(promisesArr) { return new Promise((resolve, reject) => { // 定义一个计数器 let count = 0; const arr = []; const l = promis 阅读全文
posted @ 2022-08-17 23:54 蓓蕾心晴 阅读(121) 评论(0) 推荐(0) 编辑
摘要:console.log(" sleep "); // sleep 等待几秒 const sleep = (seconds) => new Promise((resolve) => setTimeout(resolve, seconds)); async function sleepTest() { 阅读全文
posted @ 2022-08-17 23:44 蓓蕾心晴 阅读(2086) 评论(0) 推荐(0) 编辑
摘要:// bind会返回一个硬绑定的新函数,新函数会使用指定的第一个thisCtx去调用原始函数,并将其它参数传给原始函数。 硬绑定会降低函数的灵活性,在绑定之后不能通过显式或硬绑定的方式改变this,只能通过new改变 // softBind 会对指定的函数进行封装,首先检查调用时的 this,如果 阅读全文
posted @ 2022-08-17 23:35 蓓蕾心晴 阅读(124) 评论(0) 推荐(0) 编辑
摘要:自从开了这个公众号,一直没时间为大家分享技术文章,今天得空,来开启的我首篇发文。 首先说,我也是一个前端小白,以后且叫我小叙妹妹就可,刚刚步入前端行业半年时间,很多东西都还在不断学习中,所以以后公众号为大家分享的,大部分都是一些个人学习总结的笔记与心得,如果看到好的技术文章,也会为大家分享出来(当然 阅读全文
posted @ 2022-08-09 23:53 蓓蕾心晴 阅读(50) 评论(0) 推荐(0) 编辑
摘要:转自 https://blog.csdn.net/weixin_43871678/article/details/124617216 编程范式有以下三种:1、面向对象编程2、面向过程编程3、面向函数编程 区别:面向对象编程最大的特点是:以类、对象作为组织代码的单元以及它的四大特性。 面向过程编程最大 阅读全文
posted @ 2022-08-09 00:26 蓓蕾心晴 阅读(364) 评论(0) 推荐(0) 编辑
摘要:// 1. ? var obj ={a:1,b:2} obj.c.a // 会报错:Uncaught TypeError: Cannot read properties of undefined,因为obj.c 不存在 解决方法: obj.c?.a // 等价于 obj.c && obj.c.a / 阅读全文
posted @ 2022-08-03 11:05 蓓蕾心晴 阅读(153) 评论(0) 推荐(0) 编辑
摘要:例如: var str="hahaAND123orORandANDOR56677nnn" 我想要匹配到所有的 AND 或 and 或 OR 或 or str.replace(/AND|OR/ig,"") 输出:=》haha12356677nnn' 直接把要匹配的字符 以 | 的形式写到正则里就可以, 阅读全文
posted @ 2022-08-02 19:19 蓓蕾心晴 阅读(5374) 评论(0) 推荐(0) 编辑
摘要:// 剑指 Offer II 077. 链表排序 /** * @param {ListNode} head * @return {ListNode} */ var sortList = function (head) { // 1. 首先判断当前链表不存在 ,或链表只有一个节点,则直接返回 head 阅读全文
posted @ 2022-08-02 18:17 蓓蕾心晴 阅读(89) 评论(0) 推荐(0) 编辑
摘要:归并排序使用分而治之的概念对给定的元素列表进行排序。它将问题分解为较小的子问题,直到它们变得足够简单以至可以直接解决为止。 以下是归并排序的步骤: 1、将给定的列表分为两半(如果列表中的元素数为奇数,则使其大致相等)。 2、以相同的方式继续划分子数组,直到只剩下单个元素数组。 3、从单个元素数组开始 阅读全文
posted @ 2022-08-01 19:21 蓓蕾心晴 阅读(747) 评论(0) 推荐(0) 编辑
摘要:// 桶排序 // 公式 // 桶的数量 = ((最大值 - 最小值)/ 数组长度) + 1 // 元素所属桶的位置 =( 元素大小 - 最小值)/ 数组长度 function bucketSort(arr) { let min = Math.min(...arr); let max = Math. 阅读全文
posted @ 2022-08-01 15:57 蓓蕾心晴 阅读(113) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示