python实现 LeetCode19——Remove Nth Node From End of List

Given a linked list, remove the nth node from the end of list and return its head.

For example,

   Given linked list: 1->2->3->4->5, and n = 2.

   After removing the second node from the end, the linked list becomes 1->2->3->5.

Note:
Given n will always be valid.
Try to do this in one pass.

这个题的思路就是用两个指针p和q指向head,然后q向后移动n步,进入循环,p和q同时向后移动,直到q.next为空,去掉p后面的节点。还有就是对于q为空,q.next不存在进行特殊讨论下。

leetcode提交代码

class Solution():
    def removeNthFromEnd(self, head, n):
        p=head
        q=head
        while n!=0:
            q=q.next
            n=n-1
            if q==None :
                return head.next
        while q.next!=None:
            p=p.next
            q=q.next
        r=p.next
        p.next=r.next
        return head

另外附上可以检验的代码

# -*- coding: utf-8 -*
class Node(object):
    def __init__(self,val,p=None):
        self.data = val
        self.next = p

class list(object):
    def __init__(self):                 #头节点为0
        self.head = 0
    def initlist(self,data):
        self.head = Node(data[0])
        p = self.head
        for i in data[1:]:
            node = Node(i)
            p.next = node
            p = p.next

class Solution():
    def removeNthFromEnd(self, head, n):
        p=head
        q=head
        while n!=0:
            q=q.next
            n=n-1
            if q==None :
                return head.next
        while q.next!=None:
            p=p.next
            q=q.next
        r=p.next
        p.next=r.next
        return head
    def shuchu(self,head):
        p=head
        while p!=None:
            print p.data
            p=p.next
s = Solution()
l=list()
l.initlist([1,2,3,4])
p=s.removeNthFromEnd(l.head,3)
s.shuchu(p)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值