zoukankan      html  css  js  c++  java
  • 找到链表的倒数第k个节点 python

      题目:给定一个链表的头节点,输出链表倒数第k个节点的值

      分析:最简单的思路就按顺序访问链表节点,得到链表的长度x之后,再次从头节点出发,访问到第x-k+1个节点时,就是链表倒数第k个节点,但是这样的方法对前x-k+1个节点重复访问了两遍,效率较低。在解答链表相关题目时,设置两个甚至三个指针常用的方法,在这个题目中,可以设置两个指针,一个为a,一个为b,a先出发,在a访问了k-1个节点时,b从头节点出发,然后两个指针同时向后访问,当a访问到最后一个节点时,b访问到的就是倒数第k个节点,代码如下。

    def lastknode(head,k):
        if head==None or k==0:return None
        else:
            ahead=head#指针a
            for i in range(k-1):
                if ahead.next!=None:
                    ahead=ahead.next
                else: return None
            behend=head#指针b
            while ahead.next!=None:
                ahead=ahead.next
                behend=behend.next
            return behend

      在访问的过程中,要随时判断当前节点指向的是否是空节点,避免出现链表长度小于k的情况。

  • 相关阅读:
    P4715 【深基16.例1】淘汰赛
    P4913 【深基16.例3】二叉树深度
    P1478 陶陶摘苹果(升级版)
    P1223 排队接水
    【深基12.例1】部分背包问题
    全排列和组合
    P1036 选数
    100——第25例
    100——第24例
    100——第23例
  • 原文地址:https://www.cnblogs.com/bambipai/p/10704284.html
Copyright © 2011-2022 走看看