链表203|707|206
203移除链表元素
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def removeElements(self, head: Optional[ListNode], val: int) -> Optional[ListNode]: dummy_node = ListNode() dummy_node.next = head current = dummy_node while current.next: if current.next.val == val: current.next = current.next.next else: current = current.next return dummy_node.next
707设计链表
class MyLinkedList: class ListNode: def __init__(self, val: int, next = None): self.val = val self.next = next def __init__(self): self.dummy_head = ListNode() self.size = 0 def get(self, index: int) -> int: if index < 0 or index >= self.size: return -1 cur = self.dummy_head for i in range(index + 1): cur = cur.next return cur.val def addAtHead(self, val: int) -> None: new_node = ListNode(val, self.dummy_head.next) self.dummy_head.next = new_node self.size += 1 def addAtTail(self, val: int) -> None: cur = self.dummy_head while cur.next: cur = cur.next new_node = ListNode(val) cur.next = new_node self.size += 1 def addAtIndex(self, index: int, val: int) -> None: if 0 <= index and index <= self.size: new_node = ListNode(val) cur = self.dummy_head for i in range(index): cur = cur.next new_node.next = cur.next cur.next = new_node self.size += 1 def deleteAtIndex(self, index: int) -> None: if 0 <= index and index < self.size: cur = self.dummy_head for i in range(index): cur = cur.next cur.next = cur.next.next self.size -= 1 # 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)
206反转链表
# Definition for singly-linked list. # class ListNode: # def __init__(self, val=0, next=None): # self.val = val # self.next = next class Solution: def reverseList(self, head: Optional[ListNode]) -> Optional[ListNode]: cur = head pre = None while cur: temp = cur.next cur.next = pre pre = cur cur = temp return pre