关于10分的merge函数愚蠢错误
查看原帖
关于10分的merge函数愚蠢错误
170618
voruala楼主2021/8/22 09:03

10分

int merge(int l,int r,int rtl,int rtr)
{
	if(l==r)
	{ 
		siz[rtl]+=siz[rtr];
		return rtl;
	}
	if(!rtl||!rtr)
		return rtl+rtr;
   //...
}

100分

int merge(int l,int r,int rtl,int rtr)
{
	if(!rtl||!rtr)
		return rtl+rtr;
	if(l==r)
	{ 
		siz[rtl]+=siz[rtr];
		return rtl;
	}
	//...
}

如果把l==r写在上面,有可能改变00节点的sizsiz,从而使所有空节点都有大小,爆炸了。

2021/8/22 09:03
加载中...