qq行情資料。sina行情JOSN,建議用qq,漲跌,財務資料有-市盈
阿新 • • 發佈:2021-07-11
題目:用兩個棧實現一個佇列。佇列的宣告如下,請實現它的兩個函式 appendTail 和 deleteHead ,分別完成在佇列尾部插入整數和在佇列頭部刪除整數的功能。(若佇列中沒有元素,deleteHead操作返回 -1 )
思路1:stack2模擬佇列的輸出順序,插入元素前,將保留先前的元素的stack2出棧到stack1
程式碼:
class CQueue {
Deque
Deque
public CQueue() {
stack1 = new LinkedList
stack2 = new LinkedList
}
public void appendTail(int value) { while(!stack2.isEmpty()){ stack1.push(stack2.pop()); } stack1.push(value); while(!stack1.isEmpty()){ stack2.push(stack1.pop()); } } public int deleteHead() { if(stack2.isEmpty()){ return -1; } return stack2.pop(); }
}
分析:每個元素的插入操作和刪除操作的時間複雜度分別為O(n)、O(1)
思路2: stack1負責插入元素,stack2負責模擬佇列的輸出
程式碼:
class CQueue {
Deque
Deque
public CQueue() {
stack1 = new LinkedList
stack2 = new LinkedList
}
public void appendTail(int value) { stack1.push(value); } public int deleteHead() { if(!stack2.isEmpty()){ return stack2.pop(); } else{ while(!stack1.isEmpty()){ stack2.push(stack1.pop()); } return stack2.isEmpty()?-1:stack2.pop(); } }
}
分析:每個元素的插入操作和刪除操作的時間複雜度分別為O(1)、O(1)