程序猿面试必备的算法书籍,强烈推荐全文阅读,并编程实现。想找好工作就好好研读它吧。
想要在算法面试中脱颖而出吗?这本书将为您提供灵感和技巧。《剑指Offer:名企面试官精讲典型编程题》一书分析了50个常见的编程面试问题。从基础知识,代码质量,解题思路,优化效率和综合能力五个方面分析了
剑指Offer全新第二版+剑指Offer纪念版(添加了英文版新增的面试题)
1. 题目 请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的时间复杂度都是O(1)。 若队列为空,pop_f
难度:困难 一、题目描述: 二、解题分析: 1、 使用大根堆和小根堆 假想我们现在有两个容器 A, B 这两个容器将我们的整体数据分成两部分,且 A 中的数据都小于 B 中的数据,并且 A 中的最
难度:简单 一、题目描述: 二、解题分析: 1、剑指解析 I、自顶向下 II、自底向上 2、代码实现 I、自顶向下 # Definition for a binary tree node. # cla
题目描述 请实现一个函数,输入一个整数,输出该数二进制表示中 1 的个数。例如,把 9 表示成二进制是 1001,有 2 位是 1。因此,如果输入 9,则该函数输出 2。 思路 详见链接 代码 cla
1. 题目 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树: 5 / \
实现一个栈,要求使用O(1)时间获取栈中最小值,O(1)执行pop、push操作。
分析:所谓“镜像”就是从镜子里看到的样子。我们可以画一棵二叉树,然后画出该二叉树的镜像。画完图之后我们会发现,所谓“二叉树的镜像”就是把二叉树中所有子树的左孩子和右孩子进行交换。因此需要遍历二叉树所有