В интервью мне задали этот вопрос: задав некоторый массив положительных целых чисел s, найдите длину самого длинного подмассива, так что сумма всех его значений меньше или равна некоторому положительному числу k. Каждый вход всегда будет иметь хотя бы одно решение. Массив не является круговым.
Я начал писать решение динамического программирования, которое работало путем нахождения максимальной длины при все более больших значениях от 0 до k.
Вот мой код в python, внутри него есть ошибка, которую я не мог найти, мой ответ всегда отключен несколькими цифрами:
def maxLength(s, k):
lengths = [0 for x in range(k)]
for i in range(1,k+1):
for j in range(len(s)):
if s[j] <= i and lengths[i - s[j]] + 1 > lengths[i]:
lengths[i] = lengths[i - s[j]] + 1
if i + 1 == len(s):
break
return lengths[-1]
Input1: s = [1,2,3], k = 4
Выход 1: 2
Вход2: s=[3,1,2,1], k = 4
Выход 2: 3