Это недавно было предложено другу в интервью, и мы не знаем ни одного решения, кроме простого O (n 3).
Есть ли лучший алгоритм?
Вопрос состоит в том, чтобы найти все триплеты в целочисленном массиве, сумма которого меньше или равна заданной сумме S.
Примечание. Я видел другие подобные проблемы на SO с производительностью O (n 2 log n), но все они решали более легкую версию этой проблемы, например, где arr[i] + arr[j] + arr[k] = S
или где они были проверяя, существует ли только один такой триплет.
Мой вопрос состоит в том, чтобы узнать все i,j,k
в arr[]
, что arr[i] + arr[j] + arr[k] <= S