Сообщение Re[3]: Нули и единицы от 05.04.2025 12:39
Изменено 05.04.2025 12:39 apachik
Re[3]: Нули и единицы
WX>В любом случае не представляю, как такое можно решить в режиме лайвкодинга, за 15-20 минут (а ожидали примерно такое время, раз дали задачу в самом конце).
возможно, тако код будет проще для понимания и реализации. (я не запускал, мог ошибиться где-то на +-1)
если дошли до конца, то конец
если можем подвинуть правый указатель без штрафа, то двигаем
если можем подвинуть со штрафом и лимит не исчерпали, то тоже двигаем
если ничего из верхнего не сработало, то приходится двигать левый указатель, возвращая штрафы
возможно, тако код будет проще для понимания и реализации. (я не запускал, мог ошибиться где-то на +-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(numb):
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если дошли до конца, то конец
если можем подвинуть правый указатель без штрафа, то двигаем
если можем подвинуть со штрафом и лимит не исчерпали, то тоже двигаем
если ничего из верхнего не сработало, то приходится двигать левый указатель, возвращая штрафы
Re[3]: Нули и единицы
WX>В любом случае не представляю, как такое можно решить в режиме лайвкодинга, за 15-20 минут (а ожидали примерно такое время, раз дали задачу в самом конце).
возможно, такой код будет проще для понимания и реализации (я не запускал, мог ошибиться где-то на +-1):
если дошли до конца, то конец
если можем подвинуть правый указатель без штрафа, то двигаем
если можем подвинуть со штрафом и лимит не исчерпали, то тоже двигаем
если ничего из верхнего не сработало, то приходится двигать левый указатель, возвращая штрафы
возможно, такой код будет проще для понимания и реализации (я не запускал, мог ошибиться где-то на +-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(numb):
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если дошли до конца, то конец
если можем подвинуть правый указатель без штрафа, то двигаем
если можем подвинуть со штрафом и лимит не исчерпали, то тоже двигаем
если ничего из верхнего не сработало, то приходится двигать левый указатель, возвращая штрафы