【LeetCode】Remove Nth Node From End of List
2017-02-03 11:24
316 查看
Description
Remove Nth Node From End of ListGiven a linked list, remove the nth node from the end of list and return its head.
Code
class ListNode(object): def __init__(self, x): self.val = x self.next = None class Solution(object): def removeNthFromEnd(self, head, n): buffer = ListNode(0) buffer.next = head first = buffer second = buffer for i in range(n + 1): # first 和 second的间隔是n + 1, 加在两个结点之间的有n个结点 second = second.next while second != None: # 停下的时候,first指在要被删除的结点 first = first.next second = second.next first.next = first.next.next return buffer.next
Note
关于python中的赋值python中的变量名就像是指向对象的指针。比如上面代码中的buffer, first, second,都指向同一个对象,可以类比成贴在同一个对象上的三个标签。
如果执行first = Listnode(1)的话,会让first指向一个新的对象,但是并不影响second和buffer指向原来的对象。
但是如果执行fisrt.val = 1的话,那么就改变了buffer, first, second指向那对象。
思路
在讨论区看到了一个不错的思路:用两个’指针’,保持着固定的间隔同时移动。当second移动到末尾时,first就正好指向要删除的结点的父节点。
边界条件
为了不处理边界条件,可以先加一个头结点buffer,buffer的next是真正的结果的第一个结点。
相关文章推荐
- leetcode -- Remove Nth Node From End of List
- [Leetcode] Remove Nth Node From End of List
- LeetCode 19: Remove Nth Node From End of List
- LeetCode: Remove Nth Node From End of List
- LeetCode - Remove Nth Node From End of List
- [LeetCode] Remove Nth Node From End of List
- [LeetCode] Remove Nth Node From End of List 解题报告
- leetcode 40: Remove Nth Node From End of List
- [LeetCode] Remove Nth Node From End of List
- [LeetCode] Remove Nth Node From End of List
- LeetCode 笔记系列四 Remove Nth Node From End of List
- LeetCode-Remove Nth Node From End of List
- leetcode 40: Remove Nth Node From End of List
- [LeetCode]Remove Nth Node From End of List
- [leetcode]Remove Nth Node From End of List
- LeetCode: Remove Nth Node From End of List
- [leetcode刷题系列]Remove Nth Node From End of List
- leetcode--Remove Nth Node From End of List
- LeetCode-Remove Nth Node From End of List
- LeetCode: Remove Nth Node From End of List