繁体   English   中英

在排序数组中找到3个元素,这些元素的总和为0(a + b + c = 0)

Find 3 elements in sorted array that sum up to 0 (a+b+c = 0)

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

是否有比明显的O(n ^ 3)更好的解决方案? 我可以多次使用一个元素,因此对于数组{-1,0,2},有一个解决方案:(-1,-1,2)或(0,0,0)。

1 个回复

经典的3SUM问题可以在O(n ^ 2)中解决。 这也可以用O(n ^ 2)解决

# assume arr is sorted and doesn't contain duplicates

out = []
s = set(arr)
for i in range(len(arr)):
    for j in range(i, len(arr)):
        a = - (arr[i] + arr[j])
        if a >= arr[j] and a in s:
            out.append((arr[i], arr[j], a))
2 找到a,b和c的值,使得X ^ a * Y ^ b * Z ^ c最接近N,而a + b + c最小

X , Y和Z是三个正整数。 我必须找到a , b和c值,使得X^a * Y^b * Z^c最接近某个给定的数字N而a+b+c最小( a , b和c是正整数)。 编辑 :我当前的解决方案是对从1开始的X,Y和Z进行幂次迭代。计算这些项的乘积,与先前的最佳结果进行比较,并相应地更新a,b和 ...

6 a + b + c <= n的解数

大家,这是在参考这个问题: http: //www.spoj.pl/problems/DCEPC702 /。(请参阅此处以获取示例输入)。 我将问题陈述翻译为找到以下形式的方程组的na + nb + nc &lt;= newN newN = N - (mina + minb + minc) , ...

8 在排序数组中找到三个元素,它们与第四个元素相加

我的一位朋友最近得到了这个面试问题,这在我们看来是可以解决的,但不是在面试官认为应该可能的渐近时间范围内。 这是问题所在: 你有一个N整数的数组, xs ,已排序但可能不同。 您的目标是找到四个数组索引(1) (a,b,c,d) ,以便以下两个属性成立: 目标是在O(N ...

9 如何查找数组中总计为十的元素

我正在尝试打印数组中总计为十的元素,但出现此错误: 这是我的代码: 我想要的输出是: 我怎样才能解决这个问题? ...

2017-02-07 20:39:34 2 96   ruby
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM