Количество сэндвичей в столовой равно числу студентов. Бутерброды складываются стопкой. На каждом этапе:
Если учащийся, стоящий в начале очереди, предпочитает бутерброд, находящийся на вершине стопки, он возьмет его и покинет очередь.
В противном случае он покинет его и пойдет в конец очереди.
Это продолжается до тех пор, пока ни один из студентов в очереди не захочет взять верхний бутерброд и, следовательно, не сможет его съесть.
Вам дадут два целочисленные массивы студенты и сэндвичи, где сэндвичи — это тип 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
Невозможно получить, где я допустил ошибку.
Кто-нибудь может помочь?
Я не могу понять, где я ошибся.
Подробнее здесь: https://stackoverflow.com/questions/783 ... -eat-lunch