algorithm - Find 3 elements in each of 3 arrays that sum to a given value -
let , b, c 3 arrays of n elements each. find algorithm determining whether there exist a in a, b in b, c in c such a+b+c = k.
i have tried following algorithm, takes o(n²):
sort 3 arrays. -
o(n log n)temporary array
h = k - (a+b)-o(n)for every
h, findc'in b suchc' = h - b[i]-o(n)search
c'in c using binary search -o(log n)
total = o(n log n) + o(n) + o(n² log n)
can solve in o(n log n)?
suppose there existed solution s problem in o(n lg n) time.
i show instance of 3sum, array of length n, linear-time reduces problem.
given 3sum instance array s of length n, define arrays a = b = c = s, o(n) operation. use s(a, b, c, 0) determine whether there exist indices a,b,c arrays a,b,c, respectively, such a[a] + b[b] + c[c] = 0 in o(n lg n) time. since each array equal s, same values a,b,c satisfy 3sum's s[a] + s[b] + s[c] = 0.
unless you're publish big, doubt there can such fast algorithm problem, @ least hard 3sum (you can show reduction in opposite direction work, too).
edit: make above paragraph clear, linear-time reduction 3sum proves op's problem $\omega(n^{1.5})$.
Comments
Post a Comment