14链表中倒数第k个结点

题目描述

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

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

 

func kthToLast(head *ListNode, k int) int {
    if head == nil {
        return -1
    }

    left, right := head, head
    for i:= 0; i < k; i++ {
        right = right.Next
    }

    for right != nil {
        right = right.Next
        left = left.Next
    }

    return left.Val
}

  

posted @ 2021-04-08 00:04  zqlucky  阅读(42)  评论(0编辑  收藏  举报