Thiết kế danh sách liên kết - giải pháp leetcode Python

707. Thiết kế danh sách liên kết

  • Thời gian
  • Không gian. $O[n]$

C++Java Python

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

class MyLinkedList {
  struct ListNode {
    int val;
    ListNode* next;
    ListNode[int x] : val[x], next[nullptr] {}
  };

 public:
  int get[int index] {
    if [index = length]
      return -1;
    ListNode* curr = dummy.next;
    for [int i = 0; i next;
    return curr->val;
  }

  void addAtHead[int val] {
    ListNode* head = dummy.next;
    ListNode* node = new ListNode[val];
    node->next = head;
    dummy.next = node;
    ++length;
  }

  void addAtTail[int val] {
    ListNode* curr = &dummy;
    while [curr->next]
      curr = curr->next;
    curr->next = new ListNode[val];
    ++length;
  }

  void addAtIndex[int index, int val] {
    if [index > length]
      return;
    ListNode* curr = &dummy;
    for [int i = 0; i next;
    ListNode* cache = curr->next;
    ListNode* node = new ListNode[val];
    node->next = cache;
    curr->next = node;
    ++length;
  }

  void deleteAtIndex[int index] {
    if [index = length]
      return;
    ListNode* curr = &dummy;
    for [int i = 0; i next;
    ListNode* cache = curr->next;
    curr->next = cache->next;
    --length;
    delete cache;
  }

 private:
  int length = 0;
  ListNode dummy = ListNode[0];
};

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

class MyLinkedList {
  private class ListNode {
    int val;
    ListNode next;
    public ListNode[int val] {
      this.val = val;
      this.next = null;
    }
  }

  public int get[int index] {
    if [index = length]
      return -1;
    ListNode curr = dummy.next;
    for [int i = 0; i  length]
      return;
    ListNode curr = dummy;
    for [int i = 0; i  None:
    curr = self.dummy.next
    self.dummy.next = ListNode[val]
    self.dummy.next.next = curr
    self.length += 1

  def addAtTail[self, val: int] -> None:
    curr = self.dummy
    while curr.next:
      curr = curr.next
    curr.next = ListNode[val]
    self.length += 1

  def addAtIndex[self, index: int, val: int] -> None:
    if index > self.length:
      return
    curr = self.dummy
    for _ in range[index]:
      curr = curr.next
    temp = curr.next
    curr.next = ListNode[val]
    curr.next.next = temp
    self.length += 1

  def deleteAtIndex[self, index: int] -> None:
    if index = self.length:
      return
    curr = self.dummy
    for _ in range[index]:
      curr = curr.next
    temp = curr.next
    curr.next = temp.next
    self.length -= 1

Leetcode có giải pháp Python không?

Leetcode được thiết kế cho các nhà phát triển phần mềm và cung cấp nguồn tài nguyên tuyệt vời gồm hơn 1599 câu hỏi dựa trên thuật toán cho các nhà phát triển phần mềm với nhiều ngôn ngữ được hỗ trợ. Python và SQL là hai ngôn ngữ lập trình phổ biến nhất dành cho các nhà khoa học dữ liệu .

Danh sách liên kết được định nghĩa như thế nào trong Leetcode?

Danh sách liên kết đơn. danh sách liên kết trong đó mỗi nút trỏ tới nút tiếp theo và nút cuối cùng trỏ tới null . Danh sách liên kết kép. danh sách liên kết trong đó mỗi nút có hai con trỏ, p và n, sao cho p trỏ tới nút trước và n trỏ tới nút tiếp theo; .

ListNode trong Python là gì?

Một nút được triển khai dưới dạng một lớp có tên ListNode . Lớp chứa định nghĩa để tạo một thể hiện đối tượng, trong trường hợp này, với hai biến - dữ liệu để giữ giá trị nút và bên cạnh để lưu tham chiếu đến nút tiếp theo trong danh sách.

Làm cách nào để sử dụng danh sách liên kết trong Python?

Một danh sách liên kết được tạo bằng cách sử dụng lớp nút mà chúng ta đã nghiên cứu trong chương trước. Chúng ta tạo một đối tượng Node và tạo một lớp khác để sử dụng đối tượng ode này. Chúng tôi chuyển các giá trị thích hợp thông qua đối tượng nút để trỏ đến phần tử dữ liệu tiếp theo . Chương trình dưới đây tạo danh sách liên kết với ba phần tử dữ liệu.

Chủ Đề