leetcode链表
class ListNode: def __init__(self, val=0, next=None): self.val = val #val表示值 self.next = next #指针next表示后继指针 class MyLinkedList: def __init__(self):#初始化 self.next = None def get(self, index: int) -> int: #获取链表中下标为 index 的节点的值。如果下标无效,则返回 -1 cur = self.head count = 0 while cur: count += 1 if count == index: return cur.val cur = cur.next #cur会停止在下表为i的那一项 return -1 #如何判断下标无效? def addAtHead(self, val: int) -> None: #将一个值为 val 的节点插入到链表中第一个元素之前 node = ListNode(val) node.next = self.head self.head = node def addAtTail(self, val: int) -> None: #将一个值为 val 的节点追加到链表中作为链表的最后一个元素 node = ListNode(val) cur = self.head while cur.next: cur = cur.next cur.next = node def addAtIndex(self, index: int, val: int) -> None: #将一个值为 val 的节点插入到链表中下标为 index 的节点之前。 #如果 index 等于链表的长度,那么该节点会被追加到链表的末尾。 #如果 index 比长度更大,该节点将 不会插入 到链表中。 count = 0 node = ListNode(val) cur = self.head while cur: if count == index-1: tmp = cur count += 1 cur = cur.next if count >= index: node.next = cur.next cur.next = node def deleteAtIndex(self, index: int) -> None: #如果下标有效,则删除链表中下标为 index 的节点。 #i-1的next,连到i的next count = 0 cur = self.head while cur and count<index-1: count += 1 cur = cur.next #此时的cur是i-1 cur.next = cur.next.next # 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)
G102的孤儿们都要好好的啊。