Re[3]: Нули и единицы
От: apachik  
Дата: 05.04.25 12:39
Оценка:
WX>В любом случае не представляю, как такое можно решить в режиме лайвкодинга, за 15-20 минут (а ожидали примерно такое время, раз дали задачу в самом конце).

возможно, такой код будет проще для понимания и реализации (я не запускал, мог ошибиться где-то на +-1):

def longestOnes(nums, k):
    left = 0
    max_len = 0
    zeros = 0

    while True:
        max_len = max(max_len, right - left + 1)
        if right == len(num):
            break
        if num[right] == 1:
            right += 1
            continue
        if num[right] == 0 and zeros < k:
            right += 1
            zeros += 1
            continue  
        if num[left] == 1:
            left += 1
            continue
        if num[left] == 0:
            left += 1
            zeros -= 1
            continue
    max_len = max(max_len, right - left + 1)

    return max_len

если дошли до конца, то конец
если можем подвинуть правый указатель без штрафа, то двигаем
если можем подвинуть со штрафом и лимит не исчерпали, то тоже двигаем
если ничего из верхнего не сработало, то приходится двигать левый указатель, возвращая штрафы
Отредактировано 05.04.2025 12:40 apachik . Предыдущая версия . Еще …
Отредактировано 05.04.2025 12:39 apachik . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.