随笔分类 - 算法
摘要:剑指OFFER 序列化二叉树 弄了半天在剑指OFFER OJ上无法通过(猜测可能是因为剑指OFFER上使用的是char类型的指针,导致有一些编译的不一致问题),同样的代码在leetcode上通过了 代码 采用的先序遍历的方式,先写序列化的代码,就是先序遍历一遍,遇到结点就记录到res中. 反序列化稍
阅读全文
摘要:剑指OFFER 数字在排序数组中出现的次数 题目描述 统计一个数字在排序数组中出现的次数。 利用排序特性解法
阅读全文
摘要:剑指OFFER 数组中的逆序对 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 解题思考记录 初看这道题,马上想到了暴力解法,就是一个
阅读全文
摘要:剑指OFFER 反转链表 分析 在原来的链表上进行反转空间复杂度O(1),稍加思考可知道最少需要三个指针,那么先处理常规的情况(结点数大于等于3个),其中该情况又要分别处理头中尾三种情况 最后慢慢处理特殊情况(结点数1个,结点数2个),然后写出代码 总结 头脑要保持清醒,指针不要弄混了
阅读全文
摘要:剑指OFFER 二叉树的深度 这道题用深搜或者宽搜都可以完成,这里我就直接用深搜了. 思路 代码上让depth每进一个左孩子/右孩子便使深度+1,离开的时候再深度 1来保证depth记录当前深度. 得到depth实时记录当前遍历到结点的深度后,设置一个max_depth保留最大的深度值. 代码
阅读全文
摘要:剑指OFFER 矩形覆盖 题目描述 分析 一般我们遇到这种看起来计算量很大似乎需要穷举的时候,都会测试一下是否满足动态规划的条件. 测试时先假设满足该问题满足最优子结构 我们先手动算出n=1,2,3,4,5的答案以便对我们的推理进行验证 | 被覆盖的2 1矩形个数 | 覆盖的种数 | | | | |
阅读全文
摘要:剑指OFFER 旋转数组的最小数字 暴力解法 直接一次扫描找出最小元素,时间效率比较低,需要改进 发现提交测试的时间还是一样的,可能是测评系统的问题吧,使用了二分查找多少都会快一些吧
阅读全文
摘要:剑指OFFER 按之字形顺序打印二叉树 套用 的代码,然后翻转一下奇数行即可
阅读全文
摘要:剑指OFFER 整数中1出现的次数
阅读全文
摘要:剑指OFFER 把二叉树打印成多行 题目 从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。 思路 二叉树的宽搜,加一个pair类型记录当前遍历到的结点的所在层数 代码 其他想法 似乎测试集中所有的结点的val值不会重复,那么用val值来表示一个结点(而不是用指针)也似乎是可行的.
阅读全文
摘要:剑指OFFER 包含min函数的栈 手动实现栈,考查基本知识的掌握
阅读全文
摘要:剑指OFFER 和为S的连续整数序列 题目描述 小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,
阅读全文
摘要:剑指OFFER 把数组排成最小的数 题目描述 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如8输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路 直接对输入的数组进行排序,重写sort方法使用的cmp函数. 取能排
阅读全文
摘要:剑指OFFER 栈的压入,弹出序列 题目 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的
阅读全文
摘要:剑指OFFER 链表中倒数第K个结点 思路 设置两个间隔为K个结点的指针,他们同步前进,后结点到达NULL的时候,说明前结点就是倒数第K个结点.
阅读全文
摘要:剑指OFFER 对称的二叉树 思路 先正向先序遍历一次(先左子树,后右子树),再反向先序遍历一次(先右子树,后左子树).看两次遍历的结果是否相同,如果相同,那么说明是对称的. 分析 节点对称有两个含义, 1.节点的值相等 2.节点在树种的位置对称 如何准确地表示出节点在树中的位置是难点 注意 空结点
阅读全文
摘要:剑指OFFER 连续数组的最大和 经典的动态规划题 其思路是把所有的和都算出来,当然不能简单粗暴的直接相加,要利用上一次计算出的结果加速第二次的运算
阅读全文
摘要:剑指OFFER 两个链表的第一个公共结点 同步出发,如果首次发现已经被访问过的结点,那么这个结点就是第一个公共结点
阅读全文

浙公网安备 33010602011771号