# algorithm **Repository Path**: evan_orange/algorithm ## Basic Information - **Project Name**: algorithm - **Description**: 用JavaScript实现的算法和数据结构 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-07-06 - **Last Updated**: 2021-09-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # algorithm ## 介绍 在剑指offer中的一部分题目,用javascript实现 - ⭐⭐:入门 - ⭐⭐⭐:进阶 ## 来源 - [剑指offer](https://leetcode-cn.com/problem-list/xb9nqhhg/) ## JavaScript专题 - [手动实现call、apply、bind](https://gitee.com/evan_orange/algorithm/blob/master/JavaScript/%E6%89%8B%E5%8A%A8%E5%AE%9E%E7%8E%B0call%E3%80%81apply%E3%80%81bind.md) - [手动实现promise](https://gitee.com/evan_orange/algorithm/blob/master/JavaScript/%E6%A8%A1%E6%8B%9F%E5%AE%9E%E7%8E%B0promise.md) - [基于Promise的ajax封装](https://gitee.com/evan_orange/algorithm/blob/master/JavaScript/%E5%9F%BA%E4%BA%8Epromise%E7%9A%84ajax%E5%B0%81%E8%A3%85.md) - [手动实现map、reduce、filter](https://gitee.com/evan_orange/algorithm/blob/master/JavaScript/%E6%89%8B%E5%8A%A8%E5%AE%9E%E7%8E%B0map%E3%80%81reduce%E3%80%81filter.md) - [手动实现push、pop](https://gitee.com/evan_orange/algorithm/blob/master/JavaScript/%E6%95%B0%E7%BB%84push%E3%80%81pop%E6%96%B9%E6%B3%95.md) - [数组去重、扁平、最值](https://gitee.com/evan_orange/algorithm/blob/master/JavaScript/%E6%95%B0%E7%BB%84%E5%8E%BB%E9%87%8D%E3%80%81%E6%89%81%E5%B9%B3%E3%80%81%E6%9C%80%E5%80%BC.md) - [浅拷贝与深拷贝](https://gitee.com/evan_orange/algorithm/blob/master/JavaScript/%E6%B5%85%E6%8B%B7%E8%B4%9D%E4%B8%8E%E6%B7%B1%E6%8B%B7%E8%B4%9D.md) - [图片懒加载](https://gitee.com/evan_orange/algorithm/blob/master/JavaScript/%E5%9B%BE%E7%89%87%E6%87%92%E5%8A%A0%E8%BD%BD.md) - [节流](https://gitee.com/evan_orange/algorithm/blob/master/JavaScript/%E8%8A%82%E6%B5%81.md) - [防抖](https://gitee.com/evan_orange/algorithm/blob/master/JavaScript/%E9%98%B2%E6%8A%96.md) ## 排序 - [复杂度](https://gitee.com/evan_orange/algorithm/blob/master/%E7%AE%97%E6%B3%95%E5%88%86%E7%B1%BB/%E6%8E%92%E5%BA%8F/%E5%A4%8D%E6%9D%82%E5%BA%A6.md) - [排序-概预](https://gitee.com/evan_orange/algorithm/blob/master/%E7%AE%97%E6%B3%95%E5%88%86%E7%B1%BB/%E6%8E%92%E5%BA%8F/%E6%8E%92%E5%BA%8F.md) - [冒泡排序](https://gitee.com/evan_orange/algorithm/blob/master/%E7%AE%97%E6%B3%95%E5%88%86%E7%B1%BB/%E6%8E%92%E5%BA%8F/%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F.md)⭐⭐ - [插入排序](https://gitee.com/evan_orange/algorithm/blob/master/%E7%AE%97%E6%B3%95%E5%88%86%E7%B1%BB/%E6%8E%92%E5%BA%8F/%E6%8F%92%E5%85%A5%E6%8E%92%E5%BA%8F.md)⭐⭐ - [选择排序](https://gitee.com/evan_orange/algorithm/blob/master/%E7%AE%97%E6%B3%95%E5%88%86%E7%B1%BB/%E6%8E%92%E5%BA%8F/%E9%80%89%E6%8B%A9%E6%8E%92%E5%BA%8F.md)⭐⭐ - [快速排序](https://gitee.com/evan_orange/algorithm/blob/master/%E7%AE%97%E6%B3%95%E5%88%86%E7%B1%BB/%E6%8E%92%E5%BA%8F/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F.md)⭐⭐⭐ - [归并排序](https://gitee.com/evan_orange/algorithm/blob/master/%E7%AE%97%E6%B3%95%E5%88%86%E7%B1%BB/%E6%8E%92%E5%BA%8F/%E5%BD%92%E5%B9%B6%E6%8E%92%E5%BA%8F.md)⭐⭐⭐ - [堆排序](http://)⭐⭐⭐ ## 二叉树 - [二叉树-概览](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%A0%91.md) - [二叉树的基本操作]()⭐⭐ - [二叉树的中序遍历](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E4%B8%AD%E5%BA%8F%E9%81%8D%E5%8E%86.md)⭐⭐ - [二叉树的前序遍历](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%89%8D%E5%BA%8F%E9%81%8D%E5%8E%86.md)⭐⭐ - [二叉树的后序遍历](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E5%90%8E%E5%BA%8F%E9%81%8D%E5%8E%86.md)⭐⭐ - [二叉树的最大深度](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%A4%A7%E6%B7%B1%E5%BA%A6.md)⭐⭐ - [二叉树的最小深度](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E6%9C%80%E5%B0%8F%E6%B7%B1%E5%BA%A6.md)⭐⭐ - [重建二叉树](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%A0%91%E9%87%8D%E5%BB%BA.md)⭐⭐ - [求二叉树的遍历]()⭐⭐ - [二叉树的镜像](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%A0%91%E7%9A%84%E9%95%9C%E5%83%8F.md)⭐⭐ - [对称的二叉树](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E5%AF%B9%E7%A7%B0%E7%9A%84%E4%BA%8C%E5%8F%89%E6%A0%91.md)⭐⭐ - [平衡二叉树](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E5%B9%B3%E8%A1%A1%E4%BA%8C%E5%8F%89%E6%A0%91.md)⭐⭐ - [二叉搜索树的第k个节点](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E7%9A%84%E7%AC%ACk%E5%A4%A7%E8%8A%82%E7%82%B9.md)⭐⭐ - [二叉搜索树的后序遍历]()⭐⭐ - [二叉搜索树与双向链表](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BA%8C%E5%8F%89%E6%90%9C%E7%B4%A2%E6%A0%91%E4%B8%8E%E5%8F%8C%E5%90%91%E9%93%BE%E8%A1%A8.md)⭐⭐⭐ - [不分行从上到下打印二叉树](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91.md)⭐⭐ - [把二叉树打印成多行](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E4%BA%8C%E5%8F%89%E6%A0%91/%E4%BB%8E%E4%B8%8A%E5%88%B0%E4%B8%8B%E6%89%93%E5%8D%B0%E4%BA%8C%E5%8F%89%E6%A0%91.md)⭐⭐ - [序列化二叉树]()⭐⭐⭐ - [二叉树的下一个节点]()⭐⭐⭐ - [树的子结构]()⭐⭐⭐ - [二叉树中和为某一值的路径]()⭐⭐⭐ ## 链表 - [链表-概览](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E9%93%BE%E8%A1%A8/%E9%93%BE%E8%A1%A8.md) - [删除链表中的节点or重复节点](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E9%93%BE%E8%A1%A8/%E5%88%A0%E9%99%A4%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E8%8A%82%E7%82%B9or%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0.md)⭐⭐ - [从尾到头打印链表](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E9%93%BE%E8%A1%A8/%E4%BB%8E%E5%B0%BE%E5%88%B0%E5%A4%B4%E6%89%93%E5%8D%B0%E9%93%BE%E8%A1%A8.md)⭐⭐ - [链表倒数第K个节点](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E9%93%BE%E8%A1%A8/%E9%93%BE%E8%A1%A8%E5%80%92%E6%95%B0%E7%AC%ACk%E4%B8%AA%E8%8A%82%E7%82%B9.md)⭐⭐ - [反转链表](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E9%93%BE%E8%A1%A8/%E5%8F%8D%E8%BD%AC%E9%93%BE%E8%A1%A8.md)⭐⭐ - [合并两个排序链表](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E9%93%BE%E8%A1%A8/%E5%90%88%E5%B9%B6%E4%B8%A4%E4%B8%AA%E6%8E%92%E5%BA%8F%E7%9A%84%E9%93%BE%E8%A1%A8.md)⭐⭐ - [复杂链表的复制](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E9%93%BE%E8%A1%A8/%E5%A4%8D%E6%9D%82%E9%93%BE%E8%A1%A8%E7%9A%84%E5%A4%8D%E5%88%B6.md)⭐⭐ - [两个链表的第一个公共节点](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E9%93%BE%E8%A1%A8/%E4%B8%A4%E4%B8%AA%E9%93%BE%E8%A1%A8%E7%9A%84%E7%AC%AC%E4%B8%80%E4%B8%AA%E5%85%AC%E5%85%B1%E8%8A%82%E7%82%B9.md)⭐⭐ ## 字符串 - [替换空格](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E5%AD%97%E7%AC%A6%E4%B8%B2/%E6%9B%BF%E6%8D%A2%E7%A9%BA%E6%A0%BC.md)⭐⭐ - [表示数值的字符串]() - [字符串第一个不重复的字符](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E5%AD%97%E7%AC%A6%E4%B8%B2/%E7%AC%AC%E4%B8%80%E6%AC%A1%E5%8F%AA%E5%87%BA%E7%8E%B0%E4%B8%80%E6%AC%A1%E7%9A%84%E5%AD%97%E7%AC%A6.md)⭐⭐ - [字符串的排列]() - [字符串翻转](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E5%AD%97%E7%AC%A6%E4%B8%B2/%E5%AD%97%E7%AC%A6%E4%B8%B2%E7%BF%BB%E8%BD%AC.md)⭐⭐ ## 栈和队列 - [栈和队列-概览]() - [用两个栈实现队列](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97/%E4%B8%A4%E4%B8%AA%E6%A0%88%E5%AE%9E%E7%8E%B0%E9%98%9F%E5%88%97.md)⭐⭐ - [包含min函数的栈](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97/%E5%8C%85%E5%90%ABmin%E5%87%BD%E6%95%B0%E7%9A%84%E6%A0%88.md)⭐⭐ - [栈的压入弹出序列](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97/%E6%A0%88%E7%9A%84%E5%8E%8B%E5%85%A5%E5%BC%B9%E5%87%BA%E5%BA%8F%E5%88%97.md)⭐⭐ - [有效括号](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97/%E6%9C%89%E6%95%88%E6%8B%AC%E5%8F%B7.md)⭐⭐ - [每日温度](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E6%A0%88%E5%92%8C%E9%98%9F%E5%88%97/%E6%AF%8F%E6%97%A5%E6%B8%A9%E5%BA%A6.md)⭐⭐ - [滑动窗口的最大值]()⭐⭐⭐ ## 数组 - [数组-概览]() - [和为s的两个数字]() - [两数之和](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E6%95%B0%E7%BB%84/%E4%B8%A4%E6%95%B0%E4%B9%8B%E5%92%8C.md)⭐⭐ - [连续子数组的最大和](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E6%95%B0%E7%BB%84/%E6%9C%80%E5%A4%A7%E8%BF%9E%E7%BB%AD%E5%AD%90%E6%A0%91%E5%92%8C.md)⭐⭐ - [把数组排成最小的数]() - [扑克牌顺子](https://gitee.com/evan_orange/algorithm/blob/master/%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E5%88%86%E7%B1%BB/%E6%95%B0%E7%BB%84/%E6%89%91%E5%85%8B%E7%89%8C%E9%A1%BA%E5%AD%90.md)⭐⭐ - [和为S的连续正整数序列]()⭐⭐⭐ - [构建乘积数组]()⭐⭐⭐ - [顺时针打印矩阵]()⭐⭐⭐ - [数组中的逆序对]()⭐⭐⭐ ## 堆 - [堆-概览]() - [对的基本操作]()⭐⭐⭐ - [数据流中的中位数]()⭐⭐⭐ - [最小的k个数]()⭐⭐⭐ ## 哈希表 - [哈希表-概览]() ## 分治 - [数组中的逆序队]()⭐⭐⭐ ## 数学运算 - [二进制中1的个数]()⭐⭐ - [数值的整数次方]()⭐⭐ - [数组中只出现一次的数]()⭐⭐ - [不用加减乘除做加法]()⭐⭐ - [字符串转换成整数]()⭐⭐ - [整数中1出现的次数]()⭐⭐⭐ - [1+2+3+...+n]()⭐⭐⭐ - [丑数]()⭐⭐⭐ ##查找 - [查找-概览]() - [二维数组查找]()⭐⭐ - [在排序数组中查找数字]()⭐⭐ - [整数中1出现的次数]()⭐⭐ ## DFS和BFS - [DFS和BFS-概览]() ## 递归和循环 - [递归-概览]() ## 回溯算法 - [回溯-概览]() - [二叉树中和为某一值得路径]()⭐⭐⭐ - [字符串得排序]()⭐⭐⭐ - [和为sum得n个数]()⭐⭐⭐ - [矩阵中得路径]()⭐⭐⭐ - [机器人得运动范围]()⭐⭐⭐ - [N皇后问题]()⭐⭐⭐ ## 动态规划 - [动态规划-概览] - [斐波拉契数列]()⭐⭐ - [最小路径和]()⭐⭐⭐ - [打家劫舍]()⭐⭐⭐ ## 贪心算法 - [贪心算法-概览]() - [分发饼干]()⭐⭐⭐