Skip to content

【前端算法锦集】面向校招、社招er,算法题来自于牛客版剑指offer、Leetcode、Hello算法

Notifications You must be signed in to change notification settings

Tarrency/FE_Algorithm

Repository files navigation

Algorithm

【前端算法锦集】面向校招、社招er,算法题来自于牛客版剑指offer、Leetcode HOT100、Hello算法。

剑指 Offer

数据结构

链表

  1. 从尾到头打印链表
  2. 反转链表
  3. 合并两个排序的链表
  4. 两个链表的第一个公共节点
  5. 链表中环的入口节点
  6. 链表中倒数第k个节点
  7. 复杂链表的复制(Hard)
  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. 回溯框架
  2. 设计链表
  3. 设计哈希集合
  4. 设计哈希映射

Leetcode

面试常考

  1. 验证回文串
  2. 将字符串分割成值不超过 K 的子字符串
  3. 判断子序列
  4. 合并两个有序数组
  5. x 的平方根
  6. 扁平化嵌套数组
  7. 字符串相加
  8. 打乱数组

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. 组合总和
  5. 括号生成
  6. 单词搜索
  7. 分割回文串
  8. N皇后(Hard)

二分查找

  1. 搜索插入位置
  2. 搜索二维矩阵 二维数组中的查找
  3. 在排序数组中查找元素的第一个和最后一个位置 数字在升序数组中出现的次数
  4. 搜索旋转排序数组
  5. 寻找旋转排序数组中的最小值 旋转数组的最小数字
  6. 寻找两个正序数组的中位数(Hard)

  1. 有效的括号
  2. 最小栈 包含min函数的栈
  3. 字符串解码
  4. 每日温度
  5. 柱状图中最大的矩形(Hard)

  1. 数组中的第K个最大元素
  2. 前K个高频元素
  3. 数据流的中位数(Hard) 数据流中的中位数

贪心算法

  1. 买卖股票的最佳时机 买卖股票的最好时机(一)
  2. 跳跃游戏
  3. 跳跃游戏 II
  4. 划分字母区间

动态规划

  1. 爬楼梯 跳台阶
  2. 杨辉三角
  3. 打家劫舍
  4. 完全平方数
  5. 零钱兑换
  6. 单词拆分
  7. 最长递增子序列
  8. 乘积最大子数组
  9. 分割等和子集
  10. 最长有效括号(Hard)

多维动态规划

  1. 不同路径
  2. 最小路径和 礼物的最大价值
  3. 最长回文子串
  4. 最长公共子序列
  5. 编辑距离

技巧

  1. 只出现一次的数字 数组中只出现一次的两个数字
  2. 多数元素 数组中出现次数超过一半的数字
  3. 颜色分类
  4. 下一个排列
  5. 寻找重复数

About

【前端算法锦集】面向校招、社招er,算法题来自于牛客版剑指offer、Leetcode、Hello算法

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published