1. 程式人生 > 其它 >qq行情資料。sina行情JOSN,建議用qq,漲跌,財務資料有-市盈

qq行情資料。sina行情JOSN,建議用qq,漲跌,財務資料有-市盈

題目:用兩個棧實現一個佇列。佇列的宣告如下,請實現它的兩個函式 appendTail 和 deleteHead ,分別完成在佇列尾部插入整數和在佇列頭部刪除整數的功能。(若佇列中沒有元素,deleteHead操作返回 -1 )
思路1:stack2模擬佇列的輸出順序,插入元素前,將保留先前的元素的stack2出棧到stack1
程式碼:
class CQueue {
Deque stack1;
Deque stack2;
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 stack1;
Deque stack2;
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)