D*0
2 楼
镇上的几个主妇好不容易组织了一次不带小孩的疯狂之夜,畅饮之后两个主妇结伴走路
回家。走到一半两人都感觉到内急,恰巧边上小道是墓地,两个人拐弯进去,Shelly尿
完后脱下内裤擦干净,Jamie舍不得弄脏内裤,刚好她边上是个新墓,她借着月光解下
几个系鲜花的丝带用。
第二天是周末,Shelly的老公大早上打电话给Jamie老公,“昨晚到底发生了什么事?
我太太回家竟然裙下光着,我有很不好的感觉。。。”
“是啊,我也想问,都不大好张口,我刚才起床,看见Jamie的屁股上有个不沾胶的软
卡片,上写“消防队全体同仁敬上””
回家。走到一半两人都感觉到内急,恰巧边上小道是墓地,两个人拐弯进去,Shelly尿
完后脱下内裤擦干净,Jamie舍不得弄脏内裤,刚好她边上是个新墓,她借着月光解下
几个系鲜花的丝带用。
第二天是周末,Shelly的老公大早上打电话给Jamie老公,“昨晚到底发生了什么事?
我太太回家竟然裙下光着,我有很不好的感觉。。。”
“是啊,我也想问,都不大好张口,我刚才起床,看见Jamie的屁股上有个不沾胶的软
卡片,上写“消防队全体同仁敬上””
i*y
4 楼
尿尿为什么要擦?
g*u
5 楼
假设该元素不在BST中,首先找到最后一个比该元素小的节点,然后找到第一个比该元素大的节点,返回2个节点中离目标最近的节点。
下面是实现,等待拍砖。
node * findClose(node *root, int value)
{
if(!root)
return NULL;
node * smaller=findLastSmaller(root, value);
node * greater=findFirstGrearer(root, value);
//we will also need to check both of smaller and greater are not NULL
return value-smaller->value< greater->value - value?smaller:greater;
}
node * findLastSmaller(node * root, int value)
{
if(!root)
return NULL;
node * result=NULL;
while(root)
{
if(root->value >= value)
root=root->left;
else{
result=root;
root=root->right;
}
}
return result;
}
node * findFirstGreater(node * root, int value)
{
if(!root)
return NULL;
node * result=NULL;
while(root)
{
if(root->value<=value)
root=root->right;
else{
result=root;
root=root->left;
}
}
return result;
}
时间复杂度是 O(log n), 空间复杂度是O(1)
还有一个做法就是in-order visit,然后做binary search, 找到该元素的区间,然后寻找目标节点。 时间复杂度是一样的,但空间复杂度就是 O(n)了
【在 s******n 的大作中提到】
: 突然想到一个题目,找到BST中离目标最近的那个数
: 大家又什么好解法?
相关阅读
我爱美国!Re: 中国大陆要能随意拥枪,大妈们还敢不敢跳广场舞? (转载)强烈要求站方公平对待各种网友! (转载)x一筐去洗澡了美国《新闻2+2》深度解读拉斯维加斯枪击事件【游戏】中国电脑游戏发展录 电脑游戏爱好者不得不看的视频明早就看小张要不要去洗澡了Re: 毛贼东断子绝孙,好! (转载)哲学话题:free will vs determinism (转载)差点动枪 (转载)这件事直接影响海外同胞 (转载)Re: 今年诺贝尔化学奖 (转载)美国可以全民拥抢,但中国不能Re: 有些访问学者就是来生孩子的 (转载)IQ在所有行业分布;尼玛MD竟然甩fuckty六个点 (转载)《流氓放开那个姑娘,让她跟我回家》郭德纲于谦相声我有一个疑问什么时候用at least什么时候用as many as (转载)这是啥黑话,四个服从,五个必须,七个有之 (转载)袁崇焕,《碧血剑》,以及金庸的历史观 (转载)