剑指offer 面试题39:判断平衡二叉树 提交网址:  http://www.nowcoder.com/practice/8b3b95850edb4115918ecebdf1b4d222?tpId=13&tqId=11192 时间限制:1秒       空间限制:32768K      参与人数:2481 题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 分析: 平衡二叉树定义 递归解法 AC代码: #include<iostream> #include<vector&…
剑指Offer 面试题39:二叉树的深度(高度) 题目:输入一棵二叉树的根结点,求该树的深度.从根结点到叶结点依次经过的结点(含根.叶结点)形成树的一条路径,最长路径的长度为树的深度.例如:输入二叉树:                                            10                                          /     \                                        6        14   …
题目链接地址: http://ac.jobdu.com/problem.php? pid=1368 题目1368:二叉树中和为某一值的路径 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2252解决:562 题目描写叙述: 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的全部路径. 路径定义为从树的根结点開始往下一直到叶结点所经过的结点形成一条路径. 输入: 每一个測试案例包含n+1行: 第一行为2个整数n.k(1<=n<=10000).n表示结点的个数.k表示要求的路径和…
剑指Offer 面试题45:圆圈中最后剩下的数字(约瑟夫环问题) 原书题目:0, 1, - , n-1 这n个数字排成一个圈圈,从数字0开始每次从圆圏里删除第m个数字.求出这个圈圈里剩下的最后一个数字. 牛客网改编:孩子们的游戏(圆圈中最后剩下的数) 提交网址: http://www.nowcoder.com/practice/f78a359491e64a50bce2d89cff857eb6?tpId=13&tqId=11199 参与人数:1699  时间限制:1秒 空间限制:32768K 本题…
剑指offer之面试题37 两个链表的第一个公共结点 提交网址: http://www.nowcoder.com/practice/6ab1d9a29e88450685099d45c9e31e46?tpId=13&tqId=11189 leetcode 160: https://leetcode.com/problems/intersection-of-two-linked-lists/ 参与人数:3252   时间限制:1秒   空间限制:32768K 本题知识点: 链表 时间空间效率的平衡题…
剑指offer  面试题23:从上往下打印二叉树 参与人数:4853  时间限制:1秒  空间限制:32768K 提交网址: http://www.nowcoder.com/practice/7fe2212963db4790b57431d9ed259701?tpId=13&tqId=11175 题目描述 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 分析: 此题即为二叉树的BFS,使用队列可以解决. AC代码: #include<cstdio> #include<vec…
剑指offer 面试题24:二叉搜索树的后序遍历序列(的判断) 题目:输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true.否则返回false.假设输入的数组的任意两个数字都互不相同. 提交网址: http://www.nowcoder.com/practice/a861533d45854474ac791d90e447bafd?tpId=13&tqId=11176 二叉搜索树(英语:Binary Search Tree),也称二叉查找树.有序二叉树(英语:orde…
剑指offer 面试题22:栈的压入.弹出序列 提交网址: http://www.nowcoder.com/practice/d77d11405cc7470d82554cb392585106?tpId=13&tqId=11174 参与人数:3413  时间限制:1秒  空间限制:32768K本题知识点:栈 题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是…
面试题9:斐波那契数列及其变形(跳台阶.矩形覆盖) 提交网址: http://www.nowcoder.com/practice/c6c7742f5ba7442aada113136ddea0c3?tpId=13&tqId=11160 参与人数:7267  时间限制:1秒  空间限制:32768K 题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项 Fibonacci(int n). 分析: 用递归会TLE,因为有不少地方进行了重复计算,改为循环即可解决(迭代法…
剑指offer 重建二叉树 提交网址: http://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6?tpId=13&tqId=11157 或 leetcode 105: https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/ 参与人数:5246  时间限制:1秒  空间限制:32768K 题目描述 输入某…
剑指offer:连续子数组的最大和 提交网址: http://www.nowcoder.com/practice/459bd355da1549fa8a49e350bf3df484?tpId=13&tqId=11183 参与人数:2845  时间限制:1秒   空间限制:32768K本题知识点:数组 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量…
题目:输入一棵二叉树的根节点,求该数的深度. 从根节点到叶结点依次进过的结点(含根,叶结点)形成树的一条路径,最长路径的长度为树的深度. 比如.例如以下图的二叉树的深度为4.由于它从根节点到叶结点的最长的路径包括4个结点(从根结点1開始,经过2和结点5,终于到达叶结点7) watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Ce…
面试题35:第一个只出现一次的字符 题目:在一个字符串中找到第一个只出现一次的字符.如输入abaccdeff,则输出b.(2006年google的一道笔试题.) 分析: 首先应向确认一下是ASCII字符串,而不是Unicode字符串.用hash表求解即可,由于需要先遍历一次,时间复杂度为O(n),空间复杂度为O(1) (256个ASCII字符). 满足题意的代码如下: #include<cstdio> #include<string> #include<unordered_m…
面试题 63:二叉搜索树的第k个结点 题目:给定一颗二叉搜索树,请找出其中的第k大的结点.例如, 5 / \ 3 7 /\ /\ 2 4 6 8 (见下面的图1) 中,按结点数值大小顺序第三个结点的值为4. 图1:一个有7个结点的二叉搜索树,如果按结点数值大小顺序输出,则第3个结点的值是4 提交网址: http://www.nowcoder.com/practice/ef068f602dde4d28aab2b210e859150a?tpId=13&tqId=11215 分析: 对于二叉搜索树BS…
面试题16:反转链表 提交网址: http://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca?tpId=13&tqId=11168 或 https://leetcode.com/problems/reverse-linked-list/ Total Accepted: 101523  Total Submissions: 258623  Difficulty: Easy Reverse a singly linked lis…
面试题5:从尾到头打印链表 提交网址: http://www.nowcoder.com/practice/d0267f7f55b3412ba93bd35cfa8e8035?tpId=13&tqId=11156 本题知识点: 链表 题目描述 输入一个链表,从尾到头打印链表每个节点的值.  输入描述: 输入为链表的表头 输出描述: 输出为需要打印的"新链表"的表头 分析: 此题要求返回类型为vector<int>,故有两种方法: 1. 使用vector容器在头部进行插入…
面试题4:替换空格 提交网址: http://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423?tpId=13&tqId=11155 参与人数:10327 时间限制:1秒 空间限制:32768K本题知识点:字符串 题目描述 请实现一个函数void replaceSpace(char *str,int length),将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的…
题目: 字符串的排列 热度指数:5777 时间限制:1秒 空间限制:32768K 本题知识点: 字符串 题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 结果请按字母顺序输出. 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 结果请按字…
题目: 调整数组顺序使奇数位于偶数前面 热度指数:11843 时间限制:1秒 空间限制:32768K 本题知识点: 数组 题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变. 在线提交网址: http://www.nowcoder.com/practice/beb5aa231adc45b2a5dcc5b62c93f593?rp=1&ru=/activity/oj&…
数字在已排序数组中出现的次数 提交网址: http://www.nowcoder.com/practice/70610bf967994b22bb1c26f9ae901fa2?tpId=13&tqId=11190 参与人数:2597    时间限制:1秒   空间限制:32768K 本题知识点: 数组 题目描述 统计一个数字在已排序数组中出现的次数. 样例输入: 2 3 3 3 3 4 51 3 6,5,3,3,1,0 3 样例输出: 4 2 分析:      数字在排序数组中出现的次数,首先想到…
用两个栈实现队列 提交网址:  http://www.nowcoder.com/practice/54275ddae22f475981afa2244dd448c6?tpId=13&tqId=11158 参与人数:6484  时间限制:1秒   空间限制:32768K 本题知识点:栈 队列 用两个栈实现一个队列的功能?请给出算法和思路! <分析>: 入队:将元素进栈A 出队:判断栈B是否为空,如果为空,则将栈A中的每个元素pop,并push进栈B,取出栈B的顶端值并将其返回,如果不为空,…
问题描述: 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果.如果是则返回true,否则返回false.假设输入的数组的任意两个数字都互不相同. 思路: 1.首先后序遍历的结果是[(左子树的后序)(右子树的后序)根结点],那么我们首先找到了根结点的值, 2.其次,我们知道二叉搜索树的性质是:任何结点的左子树的值小于根结点的值,小于右子树的值. 3.因此,从后向前遍历,找到第一个小于root.val的,下标为index, 若index == n-1(n为数组的长度),则显然不满足,返…
题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推.   方法1: 正常层次遍历,利用普通队列.逢奇数行(从0算起)就把该层结果逆序. class Solution { public: vector<vector<int> > Print(TreeNode* pRoot) { if(pRoot==nullptr){return {};} queue<TreeNode*>…
二叉树的先序,中序,后序如何遍历,不在此多说了.直接看题目描述吧(题目摘自九度oj剑指offer面试题6): 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并输出它的后序遍历序列. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入的第一行为一个整数n(1<=n<=1000):代表二叉树的节点个数. 输入的…
问题描述 输入一个链表,输出该链表中倒数第k个结点.(尾结点是倒数第一个) 结点定义如下: public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } 思路1: 先遍历链表,计算其长度length; 然后计算出倒数第k个结点就是正数第length - k + 1. 最后再遍历链表,找到所求结点 时间复杂度O(2n),需要遍历两次链表 代码如下: public List…
剑指Offer--笔试题+知识点总结 情景回顾 时间:2016.9.23 12:00-14:00 19:00-21:00 地点:山东省网络环境智能计算技术重点实验室 事件:笔试 注意事项:要有大局观,该舍弃的还是要舍弃,不要在一道编程题上占用超过30分钟的时间.当你思考了15分钟,还没有好的解决方式的时候,毅然舍弃!   总体来说,的题目不算太难.尤其是编程题,思路很清晰,不涉及到太复杂的算法.只有第三题可能涉及到递归操作(软肋).其中第二题有关完全二叉树的操作,只需要知道完全二叉树的四个重要性…
剑指offer 面试题29:数组中出现次数超过一半的数字 提交网址: http://www.nowcoder.com/practice/e8a1b01a2df14cb2b228b30ee6a92163?tpId=13&tqId=11181                                                 参与人数:3512  时间限制:1秒  空间限制:32768K 本题知识点:数组 题目描述 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一…
介绍 用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 目…
转自:http://www.myexception.cn/program/1973966.html 时间限制:1 秒内存限制:32 兆特殊判题:否提交:2331解决:1332 题目描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入包括一个整数n(1<=n<=50). 输出: 对应每个测试案例, 输出该青蛙跳上一个n级的台阶总共有多少种跳法. 样例输入: 6 样例输出:…