摘要:
题目:在数组中,数字减去它右边的数字得到一个数对之差。求所有数对之差的最大值。例如在数组{2, 4, 1, 16, 7, 5, 11, 9}中,数对之差的最大值是11,是16减去5的结果。分治策略:通常蛮力法不会是最好的解法,我们想办法减少减法的次数。假设我们把数组分成两个子数组,我们其实没有必要拿左边的子数组中较小的数字去和右边的子数组中较大的数字作减法。我们可以想象,数对之差的最大值只有可能是下面三种情况之一:(1)被减数和减数都在第一个子数组中,即第一个子数组中的数对之差的最大值;(2)被减数和减数都在第二个子数组中,即第二个子数组中数对之差的最大值;(3)被减数在第一个子数组中,是第一
阅读全文
posted @ 2011-07-31 15:58
PhoenixZq
阅读(561)
推荐(0)
编辑
摘要:
题目:输入一棵二叉树的根结点,判断该树是不是平衡二叉树。如果某二叉树中任意结点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。例如下图中的二叉树就是一棵平衡二叉树:#include <iostream>using namespace std;struct BTNode{ BTNode *Left; BTNode *Right; int value; BTNode(int val = 0) :value(val){}};BTNode* CreateTree(){ int data; cin >> data; BTNode* root; if(-1 == data)
阅读全文
posted @ 2011-07-31 13:24
PhoenixZq
阅读(352)
推荐(0)
编辑