JS版剑指offer
介绍
用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的更多相关文章
- C++版 - 剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题,ZOJ 1088:System Overload类似)题解
剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字 ...
- C++版 - 剑指offer之面试题37:两个链表的第一个公共结点[LeetCode 160] 解题报告
剑指offer之面试题37 两个链表的第一个公共结点 提交网址: http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?t ...
- C++版 - 剑指offer 面试题23:从上往下打印二叉树(二叉树的层次遍历BFS) 题解
剑指offer 面试题23:从上往下打印二叉树 参与人数:4853 时间限制:1秒 空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2 ...
- C++版 - 剑指offer 面试题39:判断平衡二叉树(LeetCode 110. Balanced Binary Tree) 题解
剑指offer 面试题39:判断平衡二叉树 提交网址: http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId= ...
- C++版 - 剑指Offer 面试题39:二叉树的深度(高度)(二叉树深度优先遍历dfs的应用) 题解
剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树 ...
- C++版 - 剑指offer 面试题24:二叉搜索树BST的后序遍历序列(的判断) 题解
剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个 ...
- C++版 - 剑指offer 面试题31:连续子数组的最大和 题解
剑指offer:连续子数组的最大和 提交网址: http://www.nowcoder.com/practice/459bd355da1549fa8a49e350bf3df484?tpId=13&am ...
- C++版-剑指offer 面试题6:重建二叉树(Leetcode105. Construct Binary Tree from Preorder and Inorder Traversal) 解题报告
剑指offer 重建二叉树 提交网址: http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tq ...
- C++版 - 剑指offer 面试题22:栈的压入、弹出序列 题解
剑指offer 面试题22:栈的压入.弹出序列 提交网址: http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId ...
随机推荐
- BZOJ 1257 - 余数之和 - [CQOI2007]
题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=1257 题意: 给定正整数 $n,k$,求 $(k \bmod 1) + (k \bmod ...
- EL表达式JSTL
EL表达式语言中定义了11个隐含对象,使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据. 语法:${隐式对象名称}:获得对象的引用 序号 隐含对象名称 描 ...
- Python基础知识点小结
1.Python基础知识 在Python中的两种注释方法,分别是#注释和引号(''' ''')注释,#注释类似于C语言中的//注释,引号注释类似于C语言中的/* */注释.接着在Python中 ...
- Lambda Expression
Java 8的一个大亮点是引入Lambda表达式,使用它设计的代码会更加简洁.当开发者在编写Lambda表达式时,也会随之被编译成一个函数式接口.下面这个例子就是使用Lambda语法来代替匿名的内部类 ...
- sudoers权限管理
该/etc/sudoers文件的权限管理很完善,覆盖了linux中的各种命令,各种shell.编辑器等等,在此留作以后作为参考. # This file MUST be edited with the ...
- spring 初始化
一.Spring 容器高层视图 Spring 启动时读取应用程序提供的Bean配置信息,并在Spring容器中生成一份相应的Bean配置注册表,然后根据这张注册表实例化Bean,装配号Bean之间的依 ...
- 深浅copy
浅拷贝 只copy了一层 可哈希的变量改变则二者不同 不可哈希变量改变二者都改变深拷贝 全部都copy了 不论什么值改变 原值都改变呢 变量赋值.浅拷贝.深拷贝 1,创建变量 1.1不可变对象 ...
- 记AOP概念理解
OOD/OOP面向名词领域,AOP面向动词领域. 应用举例 假设有在一个应用系统中,有一个共享的数据必须被并发同时访问,首先,将这个数据封装在数据对象中,称为Data Class,同时,将有多个访问类 ...
- 使用Ajax错误的全页面刷新问题
给提交按钮写了ajax请求,结果每次提交就将全业务刷新了.一大番折腾才知道是 提交按钮标签使用不当导致. button 标签请添加 type='button' 属性,因为浏览器默认会认为 butt ...
- 使用 notify.js 桌面提醒
//var iN = new iNotify({ // effect: 'flash', // interval: 500, // message: "有消息拉!", // aud ...