【发布时间】:2017-11-12 12:11:00
【问题描述】:
您好,我很难在 O(N) 时间内解决这个问题。
输入由 N 个介于 1 - 10^9 之间的整数组成,输出应确定是否可以使用给定值中的任意 3 个来形成三角形。 N 的限制达到 10^8,所以我的解决方案必须在 O(N) 时间内运行。
所以我知道三角不等式,但是使用不等式比较所有数字将在 O(NC3) 时间内运行,这将超过允许的复杂度?我可以就正确的解决方案获得一些帮助吗?
【问题讨论】:
-
例如,整数 3 1 4 7 中的任意 3 个不可能组成三角形,但整数 6 7 8 9 10 可以组成一个三角形
-
如果整数已排序,那么 O(N) 解决方案相对简单——所以我猜它们没有排序?
-
@ArnaudDenoyelle: 1000 1 3 3 3,最大的两个是1000和3,最小的是1,单独分析它们会说不可能有三角形
-
整数未排序,但我认为在解决方案之前对输入进行排序仍然可以接受
-
@BryanJuniano - 排序通常需要 O(N log N)。如果没问题,那么我会发布一个答案。
标签: algorithm math computer-science adhoc