Задача Leetcode 1700. Количество студентов, которые не могут пообедатьPython

Программы на Python
Anonymous
Задача Leetcode 1700. Количество студентов, которые не могут пообедать

Сообщение Anonymous »

Во время обеденного перерыва в школьной столовой предлагаются круглые и квадратные сэндвичи, обозначенные цифрами 0 и 1 соответственно. Все студенты стоят в очереди. Каждый студент предпочитает либо квадратные, либо круглые сэндвичи.
Количество сэндвичей в столовой равно числу студентов. Бутерброды складываются стопкой. На каждом этапе:
Если учащийся, стоящий в начале очереди, предпочитает бутерброд, находящийся на вершине стопки, он возьмет его и покинет очередь.
В противном случае он покинет его и пойдет в конец очереди.
Это продолжается до тех пор, пока ни один из студентов в очереди не захочет взять верхний бутерброд и, следовательно, не сможет его съесть.
Вам дадут два целочисленные массивы студенты и сэндвичи, где сэндвичи — это тип i​​​​​​​гого сэндвича в стеке (i = 0 — вершина стека), а студенты[j] — это предпочтение j​ ​​​​​й студент в начальной очереди (j = 0 — начало очереди). Возвращает количество студентов, которые не могут есть.
Пример 1:

Код: Выделить всё

Input: students = [1,1,0,0], sandwiches = [0,1,0,1]
Output: 0
Объяснение:
  • Передний ученик оставляет верхний сэндвич и возвращается в конец очереди, образуя учеников = [1 ,0,0,1].
  • Передний ученик покидает верхний сэндвич и возвращается в конец очереди, образуя учеников = [0,0,1,1].
  • Передний ученик берет верхний сэндвич и выходит из очереди, образуя учеников = [0,1,1] и сэндвичей = [1,0,1].
  • Спереди ученик покидает верхний сэндвич и возвращается в конец очереди, образуя учеников = [1,1,0].
  • Передний ученик берет верхний сэндвич и покидает линию, образуя учеников = [1 ,0] и сэндвичи = [0,1].
  • Передний ученик покидает верхний сэндвич и возвращается в конец строки, образуя учеников = [0,1].
  • Передний ученик берет верхний сэндвич и выходит из очереди, образуя учеников = [1] и сэндвичей = [1].
  • Передний ученик берет верхний сэндвич и оставляет учащиеся составляют линии = [] и бутерброды = [].
Значит, все учащиеся могут есть.
Пример 2:

Код: Выделить всё

Input: students = [1,1,1,0,0,1], sandwiches = [1,0,0,0,1,1]
Output: 3

Код: Выделить всё

class Solution:
def countStudents(self, students: List[int], sandwiches: List[int]) -> int:
queue = deque(students)
stack=[]
count=0
stack.extend(sandwiches)
while count< len(stack):
if queue[0]== stack[-1]:
queue.popleft()
stack.pop()
count =0
else:
j=queue.popleft()
queue.append(j)
count+=1
return len(stack)

Мой код не работает для этого тестового примера,

Код: Выделить всё

Input: students = [1,1,1,0,0,1], sandwiches = [1,0,0,0,1,1]
Output: 3
Мой код получает результат 2
Невозможно получить, где я допустил ошибку.
Кто-нибудь может помочь?
Я не могу понять, где я ошибся.

Подробнее здесь: https://stackoverflow.com/questions/783 ... -eat-lunch

Вернуться в «Python»