文章

JavaScript版 · 剑指offer

JavaScript版 · 剑指offer

介绍

这是笔者在上半年去阿里(蚂蚁)和腾讯面试时候,开始刷的一本书。对于面试过程中的算法和数据结构帮助非常大,所以墙裂推荐

大概三月份,面试都通过之后,就开始断断续续的阅读、刷题。最近终于刷完了这本书,收货颇丰,把过程中每道题目的想法以及 JavaScript 的解题版本都记录和整理了下来。

由于内容太多,所以划分成了 10 个专题,分别是:位运算、哈希表、堆、字符串、数组、查找、栈和队列、树、递归与循环、链表。

由于篇幅过多,不再针对每篇在 Issue 上开设单独评论,可以在此页面下讨论。如果发现问题,欢迎发起 PR 讨论。

网上已经有很多 js 版本,这版也没什么特别的地方,但是题目收录完整、专题划分明确、代码和文章风格统一,是花了蛮多心血和业余时间在里面,所以自荐一下。

希望这对于你之后的学习和面试稍有帮助,文章源码开放,食用请来Dongyuanxin’s Blog

如果您觉得还有点意思,欢迎鼓励一个 Starhttps://github.com/dongyuanxin/blog

字符串

  • 01-替换空格
  • 02-字符串的全排列
  • 03-翻转单词顺序
  • 04-实现 atoi

查找

  • 01-旋转数组最小的数字
  • 02-数字在排序数组中出现的次数

链表

  • 01-从尾到头打印链表
  • 02-快速删除链表节点
  • 03-链表倒数第 k 节点
  • 04-反转链表
  • 05-合并两个有序链表
  • 06-复杂链表的复制
  • 07-两个链表中的第一个公共节点

数组

  • 01-二维数组中的查找
  • 02-数组顺序调整
  • 03-把数组排成最小的数
  • 04-数组中的逆序对

栈和队列

  • 01-用两个栈实现队列
  • 02-包含 min 函数的栈
  • 03-栈的压入弹出序列

递归和循环

  • 01-青蛙跳台阶
  • 02-数值的整次方
  • 03-打印从 1 到最大的 n 位数
  • 04-顺时针打印矩阵
  • 05-数组中出现次数超过一半的数字
  • 06-最小的 k 个数
  • 07-和为 s 的两个数字
  • 08-和为 s 的连续正数序列
  • 09-n 个骰子的点数
  • 10-扑克牌的顺子
  • 11-圆圈中最后剩下的数字

  • 01-重建二叉树
  • 02-判断是否子树
  • 03-二叉树的镜像
  • 04-二叉搜索树的后序遍历序列
  • 05-二叉树中和为某一值的路径
  • 06-二叉树层序遍历
  • 07-二叉树转双向链表
  • 08-判断是否是平衡二叉树

位运算

  • 01-二进制中 1 的个数
  • 02-二进制中 1 的个数进阶版
  • 03-数组中只出现一次的数字

哈希表

  • 01-丑数
  • 02-第一次只出现一次的字符

  • 01-最小的 k 个数

特别鸣谢

《剑指 Offer》,除了“手动实现 atoi”采用的是 Leetcode 版,其余题目均来自此书。

本文由作者按照 CC BY 4.0 进行授权