2019-06-10剑指 链表中的第k个节点

15min 关键在边界条件。k=len+1的时候

class Solution:
    def FindKthToTail(self, head, k):
        # write code here
        n=0
        dead=ListNode(None)
        dead.next=head
        fast=dead
        slow=dead
        try:
            while n

不使用try catch

class Solution:
    def FindKthToTail(self, head, k):
        # write code here
        n=0
        dead=ListNode(None)
        dead.next=head
        fast=dead
        slow=dead
        while n

不使用哑结点还是有点难想的,特别是边界条件,其中i与k的判断条件

class Solution:
    def FindKthToTail(self, head, k):
        # write code here
        fast=head
        slow=head
        i=1
        while fast!=None:
            if i>k:slow=slow.next
            fast=fast.next
            i+=1
        return slow if i>k else None

使用哑结点比较好理解

class Solution:
    def FindKthToTail(self, head, k):
        # write code here
        dead=ListNode(None)
        dead.next=head
        f=dead
        s=dead
        i=0
        while f!=None:
            if i>=k:s=s.next
            f=f.next
            i+=1
        return s if i>k else None

最容易错的点在于例如len5 6

你可能感兴趣的:(2019-06-10剑指 链表中的第k个节点)