给定n个数字找到最小周长三角形

时间:2015-09-04 01:59:21

标签: algorithm language-agnostic

在编码比赛中遇到这个问题。可以只考虑O(n ^ 2 log(n))解决方案。我猜预期的是O(n log n)。

我得到n个数字,我必须找到3个跟随三角形不等式的数字,并且总和最小。

我希望这很容易理解。

EG。 10,2,5,1,8,20

答案是23 =(5 + 8 + 10)

2 个答案:

答案 0 :(得分:2)

最长的一面应该是第二长的继承者;否则,我们可以缩短最长时间,从而缩小周长。现在你可以使用你的二分搜索来找到O(n)可能性的第三面而不是O(n ^ 2)(实际上,你甚至不需要搜索你是否从小到大迭代,尽管排序会仍然花费你。)

答案 1 :(得分:1)

我认为答案是这样的,假设数字没有重复。

对数字进行排序。然后扫描数字并取第一个小于前两个数字之和的数字。称之为x(n)。 。 。排序系列的第n个位置。

x(n)是其中一个数字,到目前为止我们是O(n log(n))。

然后,之前的选择数量有限。那么x(n-1)必须是数字之一,因为x(n-2)+ x(n-3)

我认为重复的分析基本相同。