问题0: 二叉树的非递归遍历方法问题1: 判断一颗二叉树是否为二叉查找树.问题2: 判断两个二叉树是否相同问题3: 判断一棵树是否为平衡树问题4: 寻找二叉树的最大和最短简单路径长度问题5: 二叉树上简单路径的长度问题解答0: [0.1]前序.使用栈,访问节点后先压入右儿子,再...
分类:
其他好文 时间:
2015-03-13 16:23:09
阅读次数:
131
最大和子数组是数组中和最大的子数组,又名最大和子序列。子数组是数组中连续的n个元素,比如a2,a3,a4就是一个长度为3的子数组。顾名思义求最大和子数组就是要求取和最大的子数组。 n个元素的数组包含n个长度为1的子数组:{a0},{a1},…{an-1}; n个元素的数组包含n-1个长度...
分类:
编程语言 时间:
2015-03-11 23:22:38
阅读次数:
216
题目大意:过桥问题
我们考虑利用时间最小的两个人倒运,把时间大的人依次送过去
有两种方式:
1.时间最小的人和时间最大的人过去,然后时间最小的人把火把拿回来
2.时间最小和第二小的两个人过去,然后时间最小的人把火把拿回来;接着时间最大和第二大的两个人过去,时间第二小的人把火把拿回来
为了保证最优 运输应该不外乎这两种形式
那么令f[i]表示当前没有过桥的人还剩i个时的最短时间 DP即可...
分类:
其他好文 时间:
2015-03-09 16:19:52
阅读次数:
129
解决最大连续子序列和的两种方法:分治,动态规划。
分治时间复杂度虽然更高,但我还是写了一遍加深对这种思想的理解:将一个问题分治成若干个小的同样思路的子问题来解决。本题将所求序列等分成左右两个子序列,愿序列的最大子序列和必是左序列最大子序列和,有序列最大子序列和,跨左右子序列最大和三者中的最大者。
动态规划:用dp[i]更新dp[i+1]就行。
分治:
//
// main.cpp
// ...
分类:
其他好文 时间:
2015-03-09 14:33:35
阅读次数:
216
题目大意:给定一棵完全二叉树,可以交换某个节点的左右儿子,求最少交换多少次可以使所有的叶节点深度相差不超过1,且深度较大的叶节点都在深度较小的叶节点左侧
这水题居然还WA了两次- - 脑残害死人啊QAQ
首先DFS一次处理出深度最大和最小的叶节点 如果深度相差>=2则无解
然后再DFS一遍,对于每个节点首先向子节点递归,然后记录左右两棵子树中深度较大叶节点的存在性和深度较小叶节点的存在性...
分类:
其他好文 时间:
2015-03-08 18:50:13
阅读次数:
163
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [?2,1,?3,4,?1,2,1,?5,4],
the contiguous subarray [4,?1,2,1] ha...
分类:
其他好文 时间:
2015-03-08 11:49:56
阅读次数:
140
最近课业繁重,这题写了两天。。昨晚睡觉的时候才突然想到了最后一点的解决方法。
不知道该不该叫做拓扑。。感觉还是挺像的。。就把标题称之为类拓扑了。。这题的方法是用map来标记状态是否存在,然后用类似拓扑的方法不断的找拿走后依然稳定的方块,我用了两个优先队列来维护,分别取最大和最小。然后就是模拟这个过程取方块了。
代码如下:
#include
#include
#include
#incl...
分类:
其他好文 时间:
2015-03-05 17:01:09
阅读次数:
162
dp经典题求一个数列内 不重叠的两段连续数段的最大和lm[i]代表以a[i]结束的数段左边的最大和rm[i]代表以a[i]开始的数段右边的最大和r[i]代表i----n-1的最大连续字段和 1 #include 2 #include 3 #include 4 using namespace ...
分类:
其他好文 时间:
2015-03-02 16:28:13
阅读次数:
200
题目大意:在n个数,求不重复的m段中的数据总和的最大值令dp[i][j]表示将前j个数分成 i 段时得到的最大值(必取到第 j 个数)状态转移可列为 dp[i][j]=Max(dp[i][j-1]+a[j] , Max( dp[i-1][k] ) + a[j] ) 0 2 #include 3 #....
分类:
其他好文 时间:
2015-03-02 16:17:39
阅读次数:
108
聚集函数group by可以用来汇总数据,这使得我们可以对行精选计数,计算平均数,获得最大和最小值。
但是往往我们对于分组只需要选出特定条件的。where和having是很多初学者容易搞混淆的,它们的区别:
where是过滤行的,在分组之前;
having是在分组之后,过滤分组的。...
分类:
其他好文 时间:
2015-02-28 23:02:54
阅读次数:
220