На самом деле это проблема № 10 главы 8 "Программирование жемчуга" 2-е издание. Он задал два вопроса: заданный массив A [] целых чисел (положительный и неположительный), как вы можете найти непрерывный подмассиво A [], чья сумма ближе всего к 0? Или ближе всего к определенному значению t?
Я могу придумать способ решения проблемы, ближайшей к 0. Вычислить префикс sum array S [], где S [i] = A [0] + A [1] +... + A [i], Затем сортируйте этот S в соответствии со значением элемента вместе с его исходной индексной информацией, чтобы найти субарейную сумму, ближайшую к 0, просто переместите массив S и выполните разность двух соседних значений и обновите минимальный абсолютный diff.
Вопрос в том, что лучший способ решить вторую проблему? Ближе к определенному значению t? Может ли кто-нибудь дать код или хотя бы алгоритм? (Если у кого-то есть лучшее решение для самой близкой к нулевой проблеме, ответы также приветствуются)