剑指offer(26-30)编程题】的更多相关文章

剑指 Offer 26. 树的子结构 Offer 26 题目详情: 题解分析 解法一: 第一种比较容易想到的解法就是查看这两棵树的前序遍历和中序遍历序列是否都匹配. 因为前序遍历和中序遍历可以唯一确定一棵树,所以这种方法是有效的,尽管有些复杂. 解法二: 题目是要求一个树是否是另一棵树的子结构. 如果第二棵树是第一个树从根节点出发可以匹配的子结构,那么解决方法将更简单,但是这里的子结构可能并非从根节点就匹配,还有可能在第一棵树的子孙节点开始匹配. 所以这里可以先前序递归第一颗树,再判断第一个树对…
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入两棵二叉树A和B,判断B是不是A的子结构. 思路 1)先对A树进行遍历,找到与B树的根结点值相同的结点R: 2)判断A树中以R为根结点的子树是否包含B树一样的结构. 测试算例 1.功能测试(A.B为普通二叉树:B是或者不是A树的子结构) 2.特殊测试(任意一个或者两个树的根结点为null:左斜树:右斜树) Java代码 //题目:输入两棵二叉树A和B,判断B是不是A的子…
面试题21包括min函数的栈  面试题22栈的压入.弹出序列  面试题23从上往下打印二叉树  面试题24二叉搜索树的后序遍历序列  面试题25二叉树中和为某一值的路径  面试题26复杂链表的复制  面试题27二叉搜索树与双向链表  面试题28字符串的排列  面试题29数组中出现次数超过一半的数字 面试题30最小的K个数 /****************************************************/ 面试题21 包括min函数的栈 :定义栈的数据结构,请在该类型中实…
面试30题: 题目:包含min函数的栈 题:定义栈的数据结构,请在该类型中实现一个能够得到栈最小元素的min函数.在该栈中,调用min.push.pop的时间复杂度都是O(1) 解题思路:1)如果每次压入新元素时,再调整让新元素位于栈顶,这种思路不能保证最后压入栈的元素最先出栈,因此这个数据结构已经不是栈了.X 2)如果在栈中添加一个成员变量存放最小元素,那么当最小元素弹出后,就不知道下一个最小元素在哪儿了.因此,必须将次小元素保存.X 3)把每次的最小元素保存起来放在另一个辅助栈里. √ 解题…
第一题 题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路:先快速定位到该数在哪一行,然后再迅速定位具体位置. # -*- coding:utf-8 -*- class Solution: # array 二维列表 def Find(self, target, array): # write code here row = 0 col = len(array[0]) -…
题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止).你会不会被他忽悠住?(子向量的长度至少是1) 题目分析 这题我们可以分析数组,一个一个的找规律.不过如果知道动态规划的话,很容易发现后…
// 面试题:机器人的运动范围 // 题目:地上有一个m行n列的方格.一个机器人从坐标(0, 0)的格子开始移动,它 // 每一次可以向左.右.上.下移动一格,但不能进入行坐标和列坐标的数位之和 // 大于k的格子.例如,当k为18时,机器人能够进入方格(35, 37),因为3+5+3+7=18. // 但它不能进入方格(35, 38),因为3+5+3+8=19.请问该机器人能够到达多少个格子? #include <iostream> int movingCountCore(int thres…
面试题1赋值运算符函数  面试题2 实现Singleton模式  面试题3 二维数组中的查找   面试题4 替换空格   面试题5 从头到尾打印链表   面试题6 重建二叉树   面试题7 用两个栈实现队列   面试题8 旋转数组的最小数字  面试题9 斐波那契数列   面试题9(变形) 跳台阶   面试题9(变形) 变态跳台阶  面试题9(变形) 矩形覆盖   面试题10 二进制中1的个数  面试题1赋值运算符函数  为以下类型加入赋值运算符 class CMyString { public:…
  题目描述:   HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止).给一个数组,返回它的最大连续子序列的和,你会不会被他忽悠住?(子向量的长度至少是1).   解题思路:   本题可以看做是一…
题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空) 解题思路 对此问题,每个指针节点存在两个链域,一个指向下一节点,另一个指向任意节点.首要需要完成的是对节点进行复制,然后对复制后的节点间的指向关系进行复制. 此问题分为三步来解决,时间复杂度为O(n): step1:在原节点基础上,对每个节点进行复制,并将复制节点插入被复制…