앞, 중간, 뒤에서 값을 푸시하고 팝할 수 있는 큐를 구현하라는 요청을 받았다고 가정해 보겠습니다.
세 가지 경우 모두에 대해 푸시 및 팝업 기능을 구현해야 합니다. 주어진 시간에 전체 대기열을 표시하는 다른 기능을 구현해야 합니다.
따라서 입력이 다음과 같으면
push_from_back(10)
push_from_back(20)
push_from_front(30)
push_from_middle(40)
push_from_front(50)
show_queue()
pop_from_back()
show_queue()
pop_from_front()
show_queue()
pop_from_middle()
show_queue(),
그러면 출력은 [50, 30, 40, 10, 20
이 됩니다.[50, 30, 40, 10]
[30, 40, 10]
[30, 10]
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
array :=큐의 배열 표현
-
push_from_front() 함수를 정의합니다. 가치가 있을 것입니다
-
위치 0의 배열에 값 삽입
-
-
push_from_middle() 함수를 정의합니다. 가치가 있을 것입니다
-
배열의 위치(배열 크기) / 2에 값 삽입
-
-
push_from_back() 함수를 정의합니다. 가치가 있을 것입니다
-
배열 끝에 값 삽입
-
-
pop_from_front() 함수를 정의합니다.
-
비어 있지 않은 경우 배열에서 첫 번째 요소를 삭제하고 반환합니다.
-
-
pop_from_middle() 함수를 정의합니다.
-
(배열의 길이 - 1) /2 위치에 있는 요소를 삭제하고 반환
-
-
pop_from_back() 함수를 정의합니다.
-
배열에서 마지막 요소를 삭제하고 반환
-
-
show_queue() 함수를 정의합니다. 입력이 필요하지 않습니다.
-
반환 배열
-
예시
더 나은 이해를 위해 다음 구현을 살펴보겠습니다.
class Solution():def __init__(self):self.array =[] def push_from_front(self, value):self.array.insert(0, value) def push_from_middle(self, value):self.array. insert(len(self.array) // 2, 값) def push_from_back(self, value):self.array.append(value) def pop_from_front(self):return (self.array 또는 [-1]).pop( 0) def pop_from_middle(self):return (self.array 또는 [-1]).pop((len(self.array) - 1) // 2) def pop_from_back(self):return (self.array 또는 [- 1]).pop() def show_queue(self):return self.arrayob =Solution()ob.push_from_back(10)ob.push_from_back(20)ob.push_from_front(30)ob.push_from_middle(40)ob.push_from_front(50) )print(ob.show_queue())ob.pop_from_back()print(ob.show_queue())ob.pop_from_front()print(ob.show_queue())ob.pop_from_middle()print(ob.show_queue())사전>입력
ob =Solution()ob.push_from_back(10)ob.push_from_back(20)ob.push_from_front(30)ob.push_from_middle(40)ob.push_from_front(50)print(ob.show_queue())ob.pop_from_back( )print(ob.show_queue())ob.pop_from_front()print(ob.show_queue())ob.pop_from_middle()print(ob.show_queue())출력
[50, 30, 40, 10, 20][50, 30, 40, 10][30, 40, 10][30, 10]