237. 删除链表中的节点
请编写一个函数,使其可以删除某个链表中给定的(非末尾的)节点,您将只被给予要求被删除的节点。
比如:假设该链表为 1 -> 2 -> 3 -> 4
,给定您的为该链表中值为 3
的第三个节点,那么在调用了您的函数之后,该链表则应变成 1 -> 2 -> 4
。
代码如下:耗时60ms
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def deleteNode(self, node): """ :type node: ListNode :rtype: void Do not return anything, modify node in-place instead. """ node.val = node.next.val node.next= node.next.next
19. 删除链表的倒数第N个节点
给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点。
示例:
给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后,链表变为 1->2->3->5.
说明:
给定的 n 保证是有效的。
进阶:
你能尝试使用一趟扫描实现吗?
代码如下: 耗时52ms
# Definition for singly-linked list. # class ListNode: # def __init__(self, x): # self.val = x # self.next = None class Solution: def removeNthFromEnd(self, head, n): """ :type head: ListNode :type n: int :rtype: ListNode """ ##### the first method is out of time List = [] count = 0 while (head): List.append(head) head = head.next count = count + 1 if count == 1: return None if List[-n].next == None: List[-n - 1].next = None return List[0] else: List[-n].val = List[-n].next.val List[-n].next = List[-n].next.next return List[0]