mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-10 04:06:51 +08:00
Merge pull request #2044 from jianghongcheng/master
Update 0707.设计链表.md
This commit is contained in:
@ -486,15 +486,10 @@ class MyLinkedList {
|
|||||||
Python:
|
Python:
|
||||||
```python
|
```python
|
||||||
# 单链表
|
# 单链表
|
||||||
class Node(object):
|
class MyLinkedList1:
|
||||||
def __init__(self, x=0):
|
|
||||||
self.val = x
|
|
||||||
self.next = None
|
|
||||||
|
|
||||||
class MyLinkedList(object):
|
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.head = Node()
|
self.dummy_head = Node()# 添加虚拟头指针,便于操作
|
||||||
self.size = 0 # 设置一个链表长度的属性,便于后续操作,注意每次增和删的时候都要更新
|
self.size = 0 # 设置一个链表长度的属性,便于后续操作,注意每次增和删的时候都要更新
|
||||||
|
|
||||||
def get(self, index):
|
def get(self, index):
|
||||||
@ -504,7 +499,7 @@ class MyLinkedList(object):
|
|||||||
"""
|
"""
|
||||||
if index < 0 or index >= self.size:
|
if index < 0 or index >= self.size:
|
||||||
return -1
|
return -1
|
||||||
cur = self.head.next
|
cur = self.dummy_head.next
|
||||||
while(index):
|
while(index):
|
||||||
cur = cur.next
|
cur = cur.next
|
||||||
index -= 1
|
index -= 1
|
||||||
@ -516,8 +511,8 @@ class MyLinkedList(object):
|
|||||||
:rtype: None
|
:rtype: None
|
||||||
"""
|
"""
|
||||||
new_node = Node(val)
|
new_node = Node(val)
|
||||||
new_node.next = self.head.next
|
new_node.next = self.dummy_head.next
|
||||||
self.head.next = new_node
|
self.dummy_head.next = new_node
|
||||||
self.size += 1
|
self.size += 1
|
||||||
|
|
||||||
def addAtTail(self, val):
|
def addAtTail(self, val):
|
||||||
@ -526,7 +521,7 @@ class MyLinkedList(object):
|
|||||||
:rtype: None
|
:rtype: None
|
||||||
"""
|
"""
|
||||||
new_node = Node(val)
|
new_node = Node(val)
|
||||||
cur = self.head
|
cur = self.dummy_head
|
||||||
while(cur.next):
|
while(cur.next):
|
||||||
cur = cur.next
|
cur = cur.next
|
||||||
cur.next = new_node
|
cur.next = new_node
|
||||||
@ -548,12 +543,12 @@ class MyLinkedList(object):
|
|||||||
return
|
return
|
||||||
|
|
||||||
node = Node(val)
|
node = Node(val)
|
||||||
pre = self.head
|
cur = self.dummy_head
|
||||||
while(index):
|
while(index):
|
||||||
pre = pre.next
|
cur = cur.next
|
||||||
index -= 1
|
index -= 1
|
||||||
node.next = pre.next
|
node.next = cur.next
|
||||||
pre.next = node
|
cur.next = node
|
||||||
self.size += 1
|
self.size += 1
|
||||||
|
|
||||||
def deleteAtIndex(self, index):
|
def deleteAtIndex(self, index):
|
||||||
@ -563,7 +558,7 @@ class MyLinkedList(object):
|
|||||||
"""
|
"""
|
||||||
if index < 0 or index >= self.size:
|
if index < 0 or index >= self.size:
|
||||||
return
|
return
|
||||||
pre = self.head
|
pre = self.dummy_head
|
||||||
while(index):
|
while(index):
|
||||||
pre = pre.next
|
pre = pre.next
|
||||||
index -= 1
|
index -= 1
|
||||||
@ -574,11 +569,10 @@ class MyLinkedList(object):
|
|||||||
# 相对于单链表, Node新增了prev属性
|
# 相对于单链表, Node新增了prev属性
|
||||||
class Node:
|
class Node:
|
||||||
|
|
||||||
def __init__(self, val):
|
def __init__(self, val=0, next = None, prev = None):
|
||||||
self.val = val
|
self.val = val
|
||||||
self.prev = None
|
self.next = next
|
||||||
self.next = None
|
self.prev = prev
|
||||||
|
|
||||||
|
|
||||||
class MyLinkedList:
|
class MyLinkedList:
|
||||||
|
|
||||||
@ -601,6 +595,20 @@ class MyLinkedList:
|
|||||||
node = node.next
|
node = node.next
|
||||||
return node
|
return node
|
||||||
|
|
||||||
|
|
||||||
|
def _update(self, prev: Node, next: Node, val: int) -> None:
|
||||||
|
"""
|
||||||
|
更新节点
|
||||||
|
:param prev: 相对于更新的前一个节点
|
||||||
|
:param next: 相对于更新的后一个节点
|
||||||
|
:param val: 要添加的节点值
|
||||||
|
"""
|
||||||
|
# 计数累加
|
||||||
|
self._count += 1
|
||||||
|
node = Node(val)
|
||||||
|
prev.next, next.prev = node, node
|
||||||
|
node.prev, node.next = prev, next
|
||||||
|
|
||||||
def get(self, index: int) -> int:
|
def get(self, index: int) -> int:
|
||||||
"""
|
"""
|
||||||
Get the value of the index-th node in the linked list. If the index is invalid, return -1.
|
Get the value of the index-th node in the linked list. If the index is invalid, return -1.
|
||||||
@ -634,19 +642,6 @@ class MyLinkedList:
|
|||||||
node = self._get_node(index)
|
node = self._get_node(index)
|
||||||
self._update(node.prev, node, val)
|
self._update(node.prev, node, val)
|
||||||
|
|
||||||
def _update(self, prev: Node, next: Node, val: int) -> None:
|
|
||||||
"""
|
|
||||||
更新节点
|
|
||||||
:param prev: 相对于更新的前一个节点
|
|
||||||
:param next: 相对于更新的后一个节点
|
|
||||||
:param val: 要添加的节点值
|
|
||||||
"""
|
|
||||||
# 计数累加
|
|
||||||
self._count += 1
|
|
||||||
node = Node(val)
|
|
||||||
prev.next, next.prev = node, node
|
|
||||||
node.prev, node.next = prev, next
|
|
||||||
|
|
||||||
def deleteAtIndex(self, index: int) -> None:
|
def deleteAtIndex(self, index: int) -> None:
|
||||||
"""
|
"""
|
||||||
Delete the index-th node in the linked list, if the index is valid.
|
Delete the index-th node in the linked list, if the index is valid.
|
||||||
@ -656,6 +651,16 @@ class MyLinkedList:
|
|||||||
# 计数-1
|
# 计数-1
|
||||||
self._count -= 1
|
self._count -= 1
|
||||||
node.prev.next, node.next.prev = node.next, node.prev
|
node.prev.next, node.next.prev = node.next, node.prev
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# Your MyLinkedList object will be instantiated and called as such:
|
||||||
|
# obj = MyLinkedList()
|
||||||
|
# param_1 = obj.get(index)
|
||||||
|
# obj.addAtHead(val)
|
||||||
|
# obj.addAtTail(val)
|
||||||
|
# obj.addAtIndex(index,val)
|
||||||
|
# obj.deleteAtIndex(index)
|
||||||
```
|
```
|
||||||
|
|
||||||
Go:
|
Go:
|
||||||
|
Reference in New Issue
Block a user