在编码比赛中遇到这个问题。可以只考虑O(n ^ 2 log(n))解决方案。我猜预期的是O(n log n)。
我得到n个数字,我必须找到3个跟随三角形不等式的数字,并且总和最小。
我希望这很容易理解。
EG。 10,2,5,1,8,20
答案是23 =(5 + 8 + 10)
答案 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) 我认为重复的分析基本相同。