今天做題後關於雙向鏈表的小總結

今天在AOJ做題時(ALDS1_3_C :Doubly Link List)最初總是超時和內存超出,經改進的出一下結論

Deque接口下的兩個類 LinkedList,ArrayDeque
LinkedList:雙向鏈表
ArrayDeque:用數組實現

的隊列(當用作堆棧時,此類可能會比Stack快,並且當用作隊列時速度高於LinkedList )。 

總結:(對於大量在兩端操作時)總體效率上ArrayDeque>LinkedList

2:  

   BufferReader br = new BufferReader(new InputStreamReader(System.in))

Scanner sc = new Scanner(System.in)

BufferReader效率比Scanner高

3:

    try{}catch(){}效率會比throws慢一點點

4:

    字符串比數字存儲需要的內存多點

5:

    Integer.parseInt類型轉換會耗費一定的時間

附上代碼:

import java.io.*;
import java.util.*;

public class _CDoublyLinkedList {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int n = Integer.parseInt(br.readLine());

        Deque<String> list = new ArrayDeque<>();

        for (int i = 0; i < n; i++) {
            String sp = br.readLine();
            if (sp.startsWith("insert")) {
                list.addFirst(sp.substring(sp.indexOf(" ") + 1));
            } else if (sp.equals("deleteFirst")) {
                list.removeFirst();
            } else if (sp.equals("deleteLast")) {
                list.removeLast();
            } else {
                list.remove(sp.substring(sp.indexOf(" ") + 1));
            }
        }
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringBuilder ans = new StringBuilder();
        ans.append(list.poll());
        for (String s : list) {
            ans.append(" ");
            ans.append(s);
        }
        bw.write(ans.toString());
        bw.newLine();
        bw.close();
        br.close();
    }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章