今天做题后关于双向链表的小总结

今天在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();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值