美文网首页
剑指offer面试题15----链表中倒数第K个节点

剑指offer面试题15----链表中倒数第K个节点

作者: minningl | 来源:发表于2017-08-04 00:21 被阅读12次

    题目:输入一个链表,输出该链表中倒数第 k 个结点。

    思路:使用两个指针left,right都指向链表的头部head,然后right向后先走k-1步,接着left、right同时向后走直到right走到头,此时left就是链表倒数第k个节点

    Python代码如下:

    class listNode(object):
        def __init__(self, val):
            self.val = val
            self.next = None
    
    
    class Solution(object):
        def FindKthToTail(self, head, k):
            left = head
            right = head
    
            if (not head) or (k<=0):
                return None
            else:
                for i in range(k-1):
                    if not right.next:
                        return None
                    else:
                        right = right.next
    
                while right.next:
                    right = right.next
                    left = left.next
    
                return left
    
    
    s = Solution()
    l1 = listNode('1')
    l2 = listNode('2')
    l3 = listNode('3')
    l4 = listNode('4')
    l1.next = l2
    l2.next = l3
    l3.next = l4
    print s.FindKthToTail(l1, 2).val  # 3

    相关文章

      网友评论

          本文标题:剑指offer面试题15----链表中倒数第K个节点

          本文链接:https://www.haomeiwen.com/subject/fpimlxtx.html