有一個(gè)quary和text要求找出兩者匹配最長(zhǎng)的字符串的長(zhǎng)度:
1/寫一個(gè)函數(shù),輸入一個(gè)二叉樹,樹中每個(gè)節(jié)點(diǎn)存放了一個(gè)整數(shù)值,函數(shù)返回這棵二叉樹中相差最大的兩個(gè)節(jié)點(diǎn)間的差值絕對(duì)值。請(qǐng)注意程序效率。
#include <iostream>
using namespace std;
struct Node
{
Node *left;
Node *right;
};
struct Detail
{
int Distance;
int Depth;
};
Detail GetMaxDistance(Node* root)
{
if (!root)
{
Detail empty = { 0, -1 };
return empty;
}
Detail lhs = GetMaxDistance(root->left);
Detail rhs = GetMaxDistance(root->right);
Detail Detail;
Detail.Depth = max(lhs.Depth + 1, rhs.Depth + 1);
Detail.Distance = max(max(lhs.Distance, rhs.Distance), lhs.Depth + rhs.Depth + 2);
return Detail;
}
void Link(Node* nodes,int parent,int left,int right)
{
if(left != -1)
nodes[parent].left = &nodes[left];
if(right != -1)
nodes[parent].right = &nodes[right];
}
void main()
{
Node test[9] = { 0 };
Link(test, 0, 1, 2);
Link(test, 1, 3, 4);
Link(test, 3, 5, 6);
Link(test, 5, 7, -1);
Link(test, 6, -1, 8);
cout <<"test: "<< GetMaxDistance(&test[0]).Distance << endl;
}
2、Java中sleep()、wait()區(qū)別
功能差不多,都用來(lái)進(jìn)行線程控制,他們最大本質(zhì)的區(qū)別是:
(1)sleep()不釋放同步鎖,wait()釋放同步鎖,使得其他線程可以使用同步控制塊或者方法
(2)sleep(milliseconds)可以用時(shí)間指定來(lái)使他自動(dòng)醒過(guò)來(lái),如果時(shí)間不到你只能調(diào)用interreput()來(lái)強(qiáng)行打斷;
wait()可以用notify()直接喚起.
(3)這兩個(gè)方法來(lái)自不同的類分別是Thread和Object
(4)wait只能在同步控制方法或者同步控制塊里面使用,而sleep可以在任何地方使用
(5)sleep必須捕獲異常,而wait不需要捕獲異常