首页 > 其他 > 详细

14链表中倒数第k个结点

时间:2021-04-08 10:14:01      阅读:14      评论:0      收藏:0      [点我收藏+]

题目描述

输入一个链表,输出该链表中倒数第k个结点。
 
思路:要保证两个链表之间相差k个,这样计算移动才是正确结果,这题受到以前做的题目的影响,面试的时候一定要问清楚k会不会大于总长度,如果大于总长度是取模还是出错,这题就是返回错误信息

双指针,一根指针先走k步(边走边判断是否为空,因为链表长可能小于k),最后两根指针一起走,前面那根指针为空时后面的指针所指即为所求

func FindKthToTail( pHead *ListNode ,  k int ) *ListNode {
    // write code here
    if pHead == nil {
        return nil
    }
    head, p1, p2 := pHead, pHead, pHead
    lenList := 0
    for head != nil {
        head = head.Next
        lenList++
    }
    if k > lenList {
        return nil
    }
    for i := 0; i < k; i++ {
        p2 = p2.Next
    }
    
    for p2 != nil {
        p1 = p1.Next
        p2 = p2.Next
    }
    return p1
}

 

14链表中倒数第k个结点

原文:https://www.cnblogs.com/dingxiaoqiang/p/14630293.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!