Ответ 1
Предположим, что у нас есть массив 1 2 4
. Мы представляем этот массив как многочлен f(x) = x^1 + x^2 + x^4
. Посмотрим на f(x)^2
, который
x^2 + 2 x^3 + x^4 + 2 x^5 + 2 x^6 + x^8
Количество способов записи n
в качестве суммы двух элементов массива - это коэффициент при x^n
, и это в общем случае верно. FFT дает нам способ эффективно умножать многочлены *, поэтому в основном мы делаем вычисление f(x)^3
и смотрим на коэффициент целевого числа S.
- Причина, по которой этот алгоритм не решает проблему 3SUM, заключается в том, что эффективность умножения FFT зависит от степени полученного полинома и, следовательно, значения массива лежат в небольшом диапазоне.