Leetcode 19 删除链表的倒数第N个节点【链表】
2019-01-24 12:08
323 查看
本题是比较基础的链表题。
1.思路
1)单次遍历
2)双指针
Note:两次遍历的方法只需要一个指针,空间换时间,因此单次遍历不可避免使用双指针
首先,双指针指向头指针,rear向后移动n次。
如果此时指针已经指向None【边界情况】,意思就是第一个元素是需要被删除的,返回head.next。
如果此时指针不指向None,则head和rear都向后移动,直到rear.next是None,此时删除head的下一个节点即可。
解题步骤:
1)给几个指针
2)rear后移
3)边界情况检查——rear已经指向None
4)同时后移,直至结束条件
5)删除选定节点
2.代码
# 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 """ result = head rear = head for i in range(n): rear = rear.next if rear == None: return head.next while(rear.next): head = head.next rear = rear.next tmp = head.next head.next = tmp.next del tmp return result
相关文章推荐
- Leetcode做题日记:19. 删除链表的倒数第N个节点(PYTHON)
- [LeetCode] 19. Remove Nth Node From End of List 删除链表的倒数第N个节点 @python
- [LeetCode-19] Remove Nth Node From End of List(删除链表中倒数第N个节点)
- LeetCODE 19 删除链表的倒数第N个节点
- leetcode 19: 删除链表的倒数第N个节点
- leetcode-19. Remove Nth Node From End of List(删除链表倒数第N个节点)
- leetcode19--删除链表中倒数第n个节点
- 【LeetCode题解】19_删除链表的倒数第N个节点(Remove-Nth-Node-From-End-of-List)
- leetcode 19 删除链表的倒数第N个节点(快慢指针)
- leetcode 19、删除链表的倒数第n个节点(双指针)
- leetcode19删除链表的倒数第N个节点(C语言版)
- LeetCode 19. 删除链表的倒数第N个节点
- [C++]LeetCode 19: Remove Nth Node From End of List(删除链表中倒数第n个节点)
- 【Leetcode】19. 删除链表的倒数第N个节点
- leetcode19 Remove Nth Node From End of List(删除链表的倒数第N个节点)
- [Leetcode] 19. 删除链表的倒数第N个节点 java
- Leetcode 19.删除链表的倒数第N个节点
- LeetCode题解(python)-19. 删除链表的倒数第N个节点
- 算法练习之 19.删除链表倒数第n个节点算法
- 【Leetcode】19. Remove Nth Node From End of List - 删掉链表倒数第n个节点