0
点赞
收藏
分享

微信扫一扫

LeetCode-707设计链表-中等

书坊尚 2022-03-12 阅读 48

标题:707设计链表-中等

题目

示例

MyLinkedList linkedList = new MyLinkedList();
linkedList.addAtHead(1);
linkedList.addAtTail(3);
linkedList.addAtIndex(1,2);   //链表变为1-> 2-> 3
linkedList.get(1);            //返回2
linkedList.deleteAtIndex(1);  //现在链表是1-> 3
linkedList.get(1);            //返回3

提示

  • 所有val值都在 [1, 1000] 之内。
  • 操作次数将在 [1, 1000] 之内。
  • 请不要使用内置的 LinkedList 库。

代码Java

public class MyLinkedList {
    int size;
    ListNode head;

    public MyLinkedList() {
        size = 0;
        head = new ListNode(0, null);
    }

    public int get(int index) {
        if (index >= size || index < 0)
            return -1;
        ListNode p = head.next;
        for (int i = 0; i < index; i++) {
            p = p.next;
        }
        return p.val;
    }

    public void addAtHead(int val) {
        ListNode p = new ListNode();
        p.val = val;
        p.next = head.next;
        head.next = p;
        size++;
    }

    public void addAtTail(int val) {
        ListNode p = new ListNode();
        ListNode s = new ListNode();
        s.next = null;
        s.val = val;
        if (head.next != null) p = head.next;
        else head.next = s;
        while (p.next != null) {
            p = p.next;
        }
        p.next = s;
        size++;
    }

    public void addAtIndex(int index, int val) {
        if (index > size) return;
        if (index < 0) {
            addAtHead(val);
            return;
        }
        if (index == size) {
            addAtTail(val);
            return;
        }
        ListNode p = head;
        ListNode s = new ListNode();
        s.val = val;
        for (int i = 0; i < index; i++) {
            p = p.next;
        }
        s.next = p.next;
        p.next = s;
        size++;
    }

    public void deleteAtIndex(int index) {
        if (index < 0 || index >= size) return;
        ListNode p = head;
        for (int i = 0; i < index; i++) {
            p = p.next;
        }
        p.next = p.next.next;
        size--;
    }

}


class ListNode {
    int val;
    ListNode next;

    public ListNode() {
    }

    public ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

class Test {
    public static void main(String[] args) {
        MyLinkedList linkedList = new MyLinkedList();
        linkedList.addAtHead(5);
        linkedList.addAtIndex(1,2);
        System.out.println(linkedList.get(1));
        linkedList.addAtHead(6);
        linkedList.addAtTail(2);
        System.out.println(linkedList.get(3));
        linkedList.addAtTail(1);
        System.out.println(linkedList.get(5));
        linkedList.addAtHead(2);
        System.out.println(linkedList.get(2));
        linkedList.addAtHead(6);
    }
}

image-20220309130908080

举报

相关推荐

0 条评论