介绍
用JavaScript刷完了剑指offer,故总结下每道题的难度、解决关键点,详细题解代码可以点链接进去细看。
关于JS刷题的技巧可以看我之前的这篇:
目录
题目=》难易程度=》关键词
(1)二位数组的查找 简单 有顺序、左下角做起始点
(4)重建二叉树 中等 画图、递归、注意下标
(8)跳台阶 简单 动态规划
(9)变态跳台阶 中等 类似斐波那契、数学分析
(10)矩形覆盖 简单偏难 类似斐波那契
(11)二进制中1的个数 中等 位运算n=n&n-1
(12)数值的整数次方 中等 数学分析、位运算
(15)反转链表 简单 三个指针
(17)树的子结构 简单偏难 注意判断条件、递归
(19)顺时针打印矩阵 中等偏难 注意判断条件、递归 || 模拟魔方法
(25)复杂链表的复制 难 map保存 || N->N'得S->S‘
(27)字符串的排列 难 回溯法 || 递归全排列法
(28)数组中出现次数超过一半的数 中等 partion法 || times变量变化法
(29)最小的k个数 中等 partion法
(30)连续子数组的最大值 中等 找规律、动态规划、注意判断条件
(33)丑数 难 动态规划、注意判断条件
(35)数组中的逆序对 难+ 基于归并排序、临时数组
(40)数组中只出现一次的数字 简单 indexOf || map记录 || 异或
(44)单次翻转序列 简单 转数组,对每项反序
(45)扑克牌顺子 中等 注意题目条件、位运算判断数字重复
(46)孩子们的游戏 难 数学分析得出公式 || 画图按题目做、注意下标
(50)数组中重复的数字 中等 将值放到对应位置上
(51)构建乘积数组 中等偏上 借助中间变量存储后面的乘积
(52)正则表达式的匹配 难 注意判断条件、递归
(54)字符流中第一个不重复的数字 中等 map记录 || indexOf法
(55)链表中环的入口节点 中等 双指针法、数学分析
(56)删除链表中重复的节点 中等 加头节点、注意多个重复
(57)二叉树的下一个节点 中等 画图、分析各种情况
(58)对称的二叉树 中等 递归、对称遍历
(60)把二叉树打印成多行 中等偏难 队列+两个记录变量
(61)序列化二叉树 中等 数组代表流、递归
(63)数据流的中位数 中等 partion法 || 维持排序 || 排序链表法 || AVL树 || 最大堆和最小堆
(64)滑动窗口中的最大值 难 改变参考对象、双端队列、存下标