介绍

用JavaScript刷完了剑指offer,故总结下每道题的难度、解决关键点,详细题解代码可以点链接进去细看。

关于JS刷题的技巧可以看我之前的这篇:JS刷题总结

剑指offer的题目在牛客网上可以看:https://www.nowcoder.com/ta/coding-interviews

所有题目的代码已经上传到了github上:https://github.com/14glwu/FEInterviewBox/tree/master/%E5%89%91%E6%8C%87offer

目录

题目=》难易程度=》关键词

(1)二位数组的查找   简单  有顺序、左下角做起始点

(2)替换空格   简单  正则

(3)从尾到头打印链表   简单  栈

(4)重建二叉树   中等  画图、递归、注意下标

(5)用两个栈实现队列   简单  注意判断条件

(6)旋转数组中的最小数字   简单  二分法

(7)斐波那契数列   简单  动态规划

(8)跳台阶   简单  动态规划

(9)变态跳台阶   中等  类似斐波那契、数学分析

(10)矩形覆盖   简单偏难  类似斐波那契

(11)二进制中1的个数   中等  位运算n=n&n-1  

(12)数值的整数次方  中等  数学分析、位运算

(13)调整数组顺序使奇数位于偶数前面   简单  两个变量作为奇数和偶数的下标

(14)链表中倒数第k个节点   简单  双指针法

(15)反转链表   简单  三个指针

(16)合并两个排序的链表   简单  递归

(17)树的子结构   简单偏难  注意判断条件、递归

(18)二叉树的镜像   简单  递归

(19)顺时针打印矩阵   中等偏难  注意判断条件、递归 || 模拟魔方法

(20)包含min函数的栈   中等  辅助栈  

(21)栈的压入、弹出序列   中等 辅助栈 

(22)从上往下打印二叉树  简单  广度遍历、队列

(23)二叉树的后续遍历序列  中等  画图

(24)二叉树和为某一值的遍历序列  中等  深度遍历、递归

(25)复杂链表的复制  难  map保存<N,N'> || N->N'得S->S‘

(26)二叉搜索树与双向链表  中等偏难  递归、中序遍历

(27)字符串的排列  难  回溯法 || 递归全排列法

(28)数组中出现次数超过一半的数  中等  partion法 || times变量变化法

(29)最小的k个数   中等  partion法

(30)连续子数组的最大值  中等  找规律、动态规划、注意判断条件

(31)1~n整数中1出现的次数   中等  位运算 || 数学分析

(32)把数组排成最小的数  简单偏难  改变排序规则

(33)丑数   难  动态规划、注意判断条件

(34)第一个只出现一次的字符   哈希表记录 

(35)数组中的逆序对  难+  基于归并排序、临时数组

(36)两个链表中的第一个公共节点   简单  双指针法  

(37)数字在排序数组中出现的次数  简单偏难  二分法改造    

(38)二叉树的深度  简单  递归

(39)平衡二叉树  简单  递归

(40)数组中只出现一次的数字  简单  indexOf || map记录 || 异或

(41)和为S的连续正数序列  中等  数学分析

(42)和为S的字符串   简单  双指针

(43)左旋转字符串  简单  裁剪拼接  

(44)单次翻转序列  简单  转数组,对每项反序

(45)扑克牌顺子  中等  注意题目条件、位运算判断数字重复

(46)孩子们的游戏  难  数学分析得出公式 || 画图按题目做、注意下标

(47)求1+2+3+...+n  中等  位运算、递归

(48)不用加减乘除做加法  中等  位运算

(49)把字符串转成整数  中等  位运算

(50)数组中重复的数字  中等  将值放到对应位置上

(51)构建乘积数组  中等偏上  借助中间变量存储后面的乘积

(52)正则表达式的匹配  难  注意判断条件、递归

(53)表示数值的字符串  中等  正则

(54)字符流中第一个不重复的数字  中等  map记录 || indexOf法

(55)链表中环的入口节点  中等  双指针法、数学分析

(56)删除链表中重复的节点  中等  加头节点、注意多个重复

(57)二叉树的下一个节点   中等  画图、分析各种情况

(58)对称的二叉树   中等  递归、对称遍历

(59)按之字形顺序打印二叉树   难  广度遍历、两个栈

(60)把二叉树打印成多行   中等偏难  队列+两个记录变量

(61)序列化二叉树   中等  数组代表流、递归

(62)二叉搜索树的第k个节点   中等  中序遍历+计数变量

(63)数据流的中位数   中等  partion法 || 维持排序 || 排序链表法 || AVL树 || 最大堆和最小堆

(64)滑动窗口中的最大值   难  改变参考对象、双端队列、存下标

(65)矩阵中的路径   中等  回溯法

(66)机器人的运动范围   中等  回溯法

JS版剑指offer的更多相关文章

  1. C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解

    剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ...

  2. C++版 - 剑指offer之面试题37:两个链表的第一个公共结点[LeetCode 160] 解题报告

    剑指offer之面试题37 两个链表的第一个公共结点 提交网址: http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?t ...

  3. C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解

    剑指offer  面试题23:从上往下打印二叉树 参与人数:4853  时间限制:1秒  空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...

  4. C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解

    剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...

  5. C++版 - 剑指Offer 面试题39:二叉树的深度(高度)(二叉树深度优先遍历dfs的应用) 题解

    剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树 ...

  6. C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解

    剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个 ...

  7. C++版 - 剑指offer 面试题31:连续子数组的最大和 题解

    剑指offer:连续子数组的最大和 提交网址: http://www.nowcoder.com/practice/459bd355da1549fa8a49e350bf3df484?tpId=13&am ...

  8. C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告

    剑指offer 重建二叉树 提交网址: http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tq ...

  9. C++版 - 剑指offer 面试题22:栈的压入、弹出序列 题解

    剑指offer 面试题22:栈的压入.弹出序列 提交网址: http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId ...

随机推荐

  1. 【C++】子序列匹配问题

    /* 一个串的“子序列”(subsequence)是将这个串中的一些字符提取出来得到一个新串,并且不改变它们的相对位置关系.例如,串"XDoi","XianYu!&quo ...

  2. C语言学习随笔记

    第一次接触C语言,心中对新知识还是充满好奇的.最开始是从晓鹏老师那听说的C语言,记得当时晓鹏老师是在给我们介绍软考,叫我们去准备软考的时候说到了C语言告诉我们C语言是基础,C语言很重要,叫我们能学多好 ...

  3. ADB——查看手机设备信息

    查看设备信息 查看手机型号 adb shell getprop ro.product.model 查看电池状况 adb shell dumpsys battery ''' Current Batter ...

  4. [zw]薰衣草/紫花苜蓿+桑椹/(黑红蓝)霉等植物

    有趣的问题 为什么越长大觉得时间过得越快? 另参考,讨论的比较深刻 为何人随着年龄的增大觉得时间过得越来越快? 小时候,你会花上十分钟去观察一只蚂蚁的活动. 小时候,走路上碰到一只鸟儿你都会新奇不已. ...

  5. JavaScript 判断当前设备是否是移动端还是PC

    if(navigator.userAgent.match(/(iPhone|iPod|Android|ios)/i)){ alert('移动端')}else { alert('PC端') }

  6. Windows使用tail命令跟踪日志

    我们知道如果是Unix/Linux环境可以直接使用 tail -f xxx.log即可. 但是Windows并没有自带这个命令,不过从网上可以找到tail.zip 实测可以将其解压放在C:\Windo ...

  7. 《linux就该这么学》第十五节课:第14,15章,dhcp服务和邮件系统

    (借鉴请改动) 13章收尾 13.6.分离解析技术    1.在主配置文件中改两个any         2.编辑区域配置文件,写入acl,使用match匹配                      ...

  8. fork()相关的源码解析

    fork()的真正执行采用的是do_fork()函数,所以下文将从do_fork()函数对fork()进行源码解析.下图是do_fork()的源码函数设计: 从上图我们可以看到do_fork()涉及到 ...

  9. CentOS 7 MySQL HA之DRBD

    一.DRBD简介 DRBD的全称为:Distributed ReplicatedBlock Device(DRBD)分布式块设备复制,DRBD是由内核模块和相关脚本而构成,用以构建高可用性的集群.其实 ...

  10. final关键字的几种用法

    在java的关键字中,static和final是两个我们必须掌握的关键字.不同于其他关键字,他们都有多种用法,而且在一定环境下使用,可以提高程序的运行性能,优化程序的结构.下面我们来了解一下final ...