Skip to content

【前端手撕锦集】面向校招、社招er,算法题来自于剑指offer(牛客)、leetcode、哈喽算法,其他前端手写题持续更新

Notifications You must be signed in to change notification settings

Tarrency/FE_Algorithm

Repository files navigation

剑指 Offer

数据结构

链表

  1. 从尾到头打印链表
  2. 反转链表
  3. 合并两个排序的链表
  4. 两个链表的第一个公共节点
  5. 链表中环的入口节点
  6. 链表中倒数第k个节点
  7. 复杂链表的复制
  8. 删除排序链表中的重复节点
  9. 删除排序链表中的节点

二叉树

  1. 二叉树的深度
  2. 二叉搜索树的第k个节点
  3. 重建二叉树
  4. 树的子结构
  5. 二叉树的镜像
  6. 从上往下打印二叉树
  7. 二叉树的后续遍历序列
  8. 二叉搜索树与双向链表
  9. 判断是不是平衡二叉树
  10. 二叉树的下一个结点
  11. 把二叉树打印成多行
  12. 序列化二叉树
  13. 二叉树中和为某一值的路径(三)
  14. 在二叉树中找到两个节点的最近公共祖先
  15. 二叉搜索树的最近公共祖先

队列&栈

  1. 用两个栈实现队列
  2. 包含min函数的栈
  3. 栈的压入、弹出序列
  4. 翻转单词序列
  5. 滑动窗口的最大值

算法

搜索算法

  1. 数字在升序数组中出现的次数
  2. 二维数组中的查找
  3. 旋转数组的最小数字
  4. 字符串的排列
  5. 数字序列中某一位的数字

动态规划

  1. 连续子数组的最大和
  2. 连续子数组的最大和(二)
  3. 跳台阶
  4. 斐波那契数列
  5. 正则表达式匹配
  6. 跳台阶
  7. 矩阵覆盖
  8. 买卖股票的最好时机(一)
  9. 礼物的最大价值
  10. 最长不含重复字符的子字符串
  11. 把数字翻译成字符串

回溯

  1. 矩阵中的路径
  2. 机器人的运动范围

排序

  1. 数组中重复的数字
  2. 数组中的逆序对
  3. 最小的K个数
  4. 数据流中的中位数

位运算

  1. 不用加减乘除做加法
  2. 二进制中1的个数
  3. 数值的整数次方
  4. 数组中只出现一次的两个数字
  5. 求1+2+3+...+n

模拟

  1. 顺时针打印矩阵
  2. 扑克牌顺子
  3. 把字符串转换成整数(atoi)
  4. 表示数值的字符串

其他算法

  1. 构建乘积数组
  2. 第一个只出现一次的字符
  3. 替换空格
  4. 调整数组顺序使奇数位于偶数前面(一)
  5. 数组中出现次数超过一半的数字
  6. 整数中1出现的次数(从1到n整数中1出现的次数)
  7. 把数组排成最小的数
  8. 丑数
  9. 和为S的连续正数序列
  10. 和为S的两个数字
  11. 左旋转字符串
  12. 孩子们的游戏(圆圈中最后剩下的数)
  13. 字符流中第一个不重复的字符
  14. 剪绳子
  15. 调整数组顺序使奇数位于偶数前面(二)
  16. 剪绳子(进阶版)
  17. 打印从1到最大的n位数

排序专题

  1. 选择排序
  2. 冒泡排序
  3. 插入排序
  4. 快速排序
  5. 归并排序
  6. 堆排序
  7. 桶排序
  8. 计数排序
  9. 基数排序

回溯框架

  1. 回溯框架

Leetcode

Hot100

哈希表

  1. 两数之和
  2. 字母异位词分组
  3. 最长连续序列

双指针

  1. 移动零
  2. 盛最多水的容器
  3. 三数之和
  4. 接雨水(Hard)

滑动窗口

  1. 无重复字符的最长子串 最长不含重复字符的子字符串
  2. 找到字符串中所有字母异位词

子串

  1. 和为 K 的子数组
  2. 滑动窗口最大值(Hard) 滑动窗口最大值
  3. 最小覆盖子串(Hard)

普通数组

  1. 最大子数组和 连续子数组的最大和
  2. 合并区间
  3. 轮转区间左旋转字符串
  4. 除自身以外数组的乘积构建乘积数组
  5. 缺失的第一个正数(Hard)

矩阵

  1. 矩阵置零
  2. 螺旋矩阵 顺时针打印矩阵
  3. 旋转图像
  4. 搜索二维矩阵 II 二维数组中的查找

链表

  1. 相交链表 两个链表的第一个公共节点
  2. 反转链表 反转链表
  3. 回文链表
  4. 环形链表
  5. 环形链表 II 链表中环的入口节点
  6. 合并两个有序链表 合并两个排序的链表
  7. 两数相加
  8. 删除链表的倒数第 N 个结点
  9. 两两交换链表中的节点
  10. K个一组翻转链表(Hard)
  11. 随机链表的复制 复杂链表的复制
  12. 排序链表
  13. 合并K个升序链表(Hard)
  14. LRU 缓存

二叉树

  1. 二叉树的中序遍历
  2. 二叉树的最大深度 二叉树的深度
  3. 翻转二叉树 二叉树的镜像
  4. 对称二叉树
  5. 二叉树的直径
  6. 二叉树的层序遍历 把二叉树打印成多行
  7. 将有序数组转换为二叉搜索树
  8. 验证二叉搜索树
  9. 二叉搜索树中第K小的元素 二叉搜索树的第k个节点
  10. 二叉树的右视图
  11. 二叉树展开为链表
  12. 从前序与中序遍历序列构造二叉树 重建二叉树
  13. 路径总和III 二叉树中和为某一值的路径(三)
  14. 二叉树的最近公共祖先 在二叉树中找到两个节点的最近公共祖先
  15. 二叉树中的最大路径和(Hard)

回溯

  1. 全排列
  2. 子集
  3. 电话号码的字母组合
  4. 组合总和

二分查找

贪心算法

动态规划

多维动态规划

技巧

About

【前端手撕锦集】面向校招、社招er,算法题来自于剑指offer(牛客)、leetcode、哈喽算法,其他前端手写题持续更新

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published