<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[qq_42181069的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/qq_42181069</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; qq_42181069]]></copyright><item><title><![CDATA[数组-前缀和数组]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125747560</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125747560</guid><author>qq_42181069</author><pubDate>Wed, 13 Jul 2022 18:20:24 +0800</pubDate><description><![CDATA[前缀和数组]]></description><category></category></item><item><title><![CDATA[数组题-双指针技巧]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125723109</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125723109</guid><author>qq_42181069</author><pubDate>Mon, 11 Jul 2022 19:46:54 +0800</pubDate><description><![CDATA[数组没有真正意义上的指针，可以把索引当作指针。


leetcode:83. 删除排序链表中的重复元素 






 leetcode:27. 移除元素






 leetcode:283. 移动零






左右指针：

 leetcode:167. 两数之和 II - 输入有序数组






 leetcode:344. 反转字符串






leetcode:5. 最长回文子串...]]></description><category></category></item><item><title><![CDATA[链表-判断回文链表]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125678332</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125678332</guid><author>qq_42181069</author><pubDate>Fri, 08 Jul 2022 15:58:00 +0800</pubDate><description><![CDATA[判断回文链表/回文字符串]]></description><category></category></item><item><title><![CDATA[链表-反转链表]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125673709</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125673709</guid><author>qq_42181069</author><pubDate>Fri, 08 Jul 2022 11:35:47 +0800</pubDate><description><![CDATA[反转链表]]></description><category></category></item><item><title><![CDATA[链表题--使用双指针技巧汇总]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125654815</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125654815</guid><author>qq_42181069</author><pubDate>Thu, 07 Jul 2022 17:35:31 +0800</pubDate><description><![CDATA[双指针技巧解决链表题汇总






 leetcode:23. 合并K个升序链表 （常考）






 剑指 Offer 22. 链表中倒数第k个节点






 leetcode:19. 删除链表的倒数第 N 个结点






 leetcode:876. 链表的中间结点









 leetcode:142. 环形链表 II






 leetcode：160. 相交链表...]]></description><category></category></item><item><title><![CDATA[数组：剑指 Offer 03. 数组中重复的数字]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125622794</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125622794</guid><author>qq_42181069</author><pubDate>Tue, 05 Jul 2022 16:38:15 +0800</pubDate><description><![CDATA[数组：剑指 Offer 03. 数组中重复的数字]]></description><category></category></item><item><title><![CDATA[数组：leetcode27:移除元素]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125606666</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125606666</guid><author>qq_42181069</author><pubDate>Mon, 04 Jul 2022 19:24:12 +0800</pubDate><description><![CDATA[leetcode27：移除元素]]></description><category></category></item><item><title><![CDATA[二叉树前序/中序/后序/层序遍历]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125558662</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125558662</guid><author>qq_42181069</author><pubDate>Fri, 01 Jul 2022 16:58:43 +0800</pubDate><description><![CDATA[二叉树前序/中序/后序/层序遍历]]></description><category></category></item><item><title><![CDATA[将列表还原为树状结构]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125555330</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125555330</guid><author>qq_42181069</author><pubDate>Fri, 01 Jul 2022 11:36:07 +0800</pubDate><description><![CDATA[JavaScript：将列表还原为树状结构]]></description><category></category></item><item><title><![CDATA[算法-求次数问题汇总]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125542197</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125542197</guid><author>qq_42181069</author><pubDate>Thu, 30 Jun 2022 16:47:04 +0800</pubDate><description><![CDATA[只出现一次的数字]]></description><category></category></item><item><title><![CDATA[算法-求和(两数/三数/四数之和)问题]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125535938</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125535938</guid><author>qq_42181069</author><pubDate>Thu, 30 Jun 2022 11:57:29 +0800</pubDate><description><![CDATA[两数之和、三数之和、四数之和]]></description><category></category></item><item><title><![CDATA[实现数组扁平化的几种方式]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125523051</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125523051</guid><author>qq_42181069</author><pubDate>Wed, 29 Jun 2022 15:35:48 +0800</pubDate><description><![CDATA[flat() 默认拉平一层嵌套数组]]></description><category></category></item><item><title><![CDATA[setTimeout和setInterval相互实现]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/125521679</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/125521679</guid><author>qq_42181069</author><pubDate>Wed, 29 Jun 2022 15:07:05 +0800</pubDate><description><![CDATA[setInterval在执行完一次代码之后， 经过了那个固定的时间间隔， 它还会自动重复执行代码， 而setTimeout只执行一次那段代码。


带清除定时器版本


3、利用setInterval实现setTimeout




4、扩展思考：为什么要用 setTimeout 模拟实现 setInterval？setInterval 的缺陷是什么？

这里只做粗略回答：定时器指定的时间间隔，表示的是何时将定时器的代码添加到消息队列，而不是何时执行代码。所以真正何时执行代码的时间是不能保证的，取决于何时被]]></description><category></category></item><item><title><![CDATA[Javascript - Promise的实现过程]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/121970717</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/121970717</guid><author>qq_42181069</author><pubDate>Thu, 16 Dec 2021 16:39:29 +0800</pubDate><description><![CDATA[一、认识Promise

Promise是一个类，可以翻译成 承诺、许诺 、期约

当我们需要给予调用者一个承诺:待会儿我会给你回调数据时，就可以创建一个Promise的对象

二、Promise的状态
 待定(pending)
  完成(fulfilled)
 拒绝(rejected)
 一旦状态被确定下来，Promise的状态会被 锁死，该Promise的状态是不可更改的

三、其他promise的API建议自己查询文档，本文只注重功能的实现

四、代码实现步骤：

1、代码结构的...]]></description><category></category></item><item><title><![CDATA[Javascript-实现全局事件总线Event Bus/ Event Emitter]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/121953470</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/121953470</guid><author>qq_42181069</author><pubDate>Wed, 15 Dec 2021 15:24:14 +0800</pubDate><description><![CDATA[自定义事件总线]]></description><category></category></item><item><title><![CDATA[JavaScript-深拷贝函数的实现]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/121948913</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/121948913</guid><author>qq_42181069</author><pubDate>Wed, 15 Dec 2021 11:49:25 +0800</pubDate><description><![CDATA[1、常见的一种实现方式


const info = JSON.parse(JSON.stringify(obj))

2、简单实现 deepClone


//工具函数
function isObject(value) {
    const type = typeof value
    return (value !== null) &amp;&amp; (type === 'object' || type === 'function')
}

function deepClone(originVal]]></description><category></category></item><item><title><![CDATA[JavaScript-节流函数的实现]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/121934002</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/121934002</guid><author>qq_42181069</author><pubDate>Tue, 14 Dec 2021 18:06:54 +0800</pubDate><description><![CDATA[1、对节流函数该怎么理解

日常小案例：

老师在上完课后给大家【五分钟】询问大家有没有什么问题要问

但是在【五分钟】之内，不管有多少同学 来问问题，都只会【解答一个问题】

如果在解答一个问题后，5分钟过后还没有同学问问题，那么就下课

所以用三句话理解就是：

当事件触发时，会触发这个事件的响应函数
	当事件密集触发时，节流函数会按照一定的频率来执行函数
	不管在这个中间有多少次触发这个事件，执行函数的频率总是固定的
2、拙劣的图解



3、 节流的应用场景

监听页面的滚动事件
	鼠标的移动事件
]]></description><category></category></item><item><title><![CDATA[JavaScript-防抖函数的实现]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/121928573</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/121928573</guid><author>qq_42181069</author><pubDate>Tue, 14 Dec 2021 15:48:24 +0800</pubDate><description><![CDATA[1、对防抖函数该怎么理解

日常小案例：

老师在上完课后给大家【五分钟】询问大家有没有什么问题要问

如果在【五分钟】时间内，没有问题要问，那么就下课了(相当于执行事件了）

如果在此期间，小非来问 问题，并且帮她解答了，解答完后，会再等【五分钟】看看还有没有别的同学问问题

如果在此期间，小凡来问 问题，并且帮她解答了，解答完后，会再等【五分钟】看看还有没有别的同学问问题

如果我等待超过了5分钟，那么就下课了(相当于执行事件了）

所以用三句话理解就是：

当事件触发时，相应的函数并不会立即触发，而是]]></description><category></category></item><item><title><![CDATA[JavaScript-简单封装Storage工具类]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/121913346</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/121913346</guid><author>qq_42181069</author><pubDate>Mon, 13 Dec 2021 20:13:14 +0800</pubDate><description><![CDATA[class MyCache {
  constructor(isLocal = true) {
    this.storage = isLocal ? localStorage: sessionStorage
  }

  setItem(key, value) {
    if (value) {
      this.storage.setItem(key, JSON.stringify(value))
    }
  }

  getItem(key) {
    let value = this.]]></description><category></category></item><item><title><![CDATA[函数柯里化]]></title><link>https://blog.youkuaiyun.com/qq_42181069/article/details/121906058</link><guid>https://blog.youkuaiyun.com/qq_42181069/article/details/121906058</guid><author>qq_42181069</author><pubDate>Mon, 13 Dec 2021 16:14:12 +0800</pubDate><description><![CDATA[1、对柯里化的理解

只传递给函数一部分参数来调用它，让它返回一个函数去处理剩余的参数的过程

2、柯里化的结构


//1、普通函数
function add(x, y, z) {
  return x + y + z
}

var result = add(10, 20, 30)

//2、函数柯里化
function sum1(x) {
  return function(y) {
    return function(z) {
      return x + y + z
    }
  }
}
]]></description><category></category></item></channel></rss>