Implement Deque by Two Stacks
Deque: Double End Queue: first] [ end
Stack FILO本身具有的api
push(element)
pop()
peek()
isEmpty()
size()
Deque需要的API:
offerFirst()
offerLast()
poll/peekFirst()
poll/peekLast()
分析
两个stack背靠背放置的时候,把元素从右边倒腾到左边,元素顺序不变
offerFirst: push in stack 1
offerLast: push in stack2
pollLast:
S2里面如果有,S2里的最后一个O(1)
S2里面如果没有,transfer elements from S1 first + pop
pollFirst:
S1里面如果有,S1里的最后一个O(1)
S2里面如果没有,transfer elements from S2 first + pop
size: => stack1.size() + stack2.size()
isEmpty(): =>stack1.isEmpty() +stack2.isEmpty()
Last updated