问道面试题,关于bst的# JobHunting - 待字闺中
x*i
1 楼
给一列整数,比如[5 6 1 2 4 3], 和两个整数,
求的是, 如果先把这一列整数构造成BST, 那么所给的这两个整数的距离 (就是从一
个点走到另一个点经过的边的数目)
比如,给的数是2,6, 那么久返回3
我的做法很普通,就是一个一个整数的插入,生成bst, 然后求两个点的距离(可以先
求lowest ancestor)
但是结果11个test case只通过了8, 不知道是什么test case
整数在0和2^31之间, 整数的数量最多是2^31
请大侠直接,哪里可以优化
update:
谢谢大家回复
其实我的问题是,
有没有不explicitly构造bst也能求解 的办法。 如果input是2^31个integer的话,那
么我的bst就需要2^31 * 12(一个integer加上2个pointer)的memory, 这个大概是24g
,还是最保守的估算。是不是这样用的heap 内存太大,导致大的test case 不过?
求的是, 如果先把这一列整数构造成BST, 那么所给的这两个整数的距离 (就是从一
个点走到另一个点经过的边的数目)
比如,给的数是2,6, 那么久返回3
我的做法很普通,就是一个一个整数的插入,生成bst, 然后求两个点的距离(可以先
求lowest ancestor)
但是结果11个test case只通过了8, 不知道是什么test case
整数在0和2^31之间, 整数的数量最多是2^31
请大侠直接,哪里可以优化
update:
谢谢大家回复
其实我的问题是,
有没有不explicitly构造bst也能求解 的办法。 如果input是2^31个integer的话,那
么我的bst就需要2^31 * 12(一个integer加上2个pointer)的memory, 这个大概是24g
,还是最保守的估算。是不是这样用的heap 内存太大,导致大的test case 不过?