zoukankan      html  css  js  c++  java
  • 14链表中倒数第k个结点

    题目描述

    输入一个链表,输出该链表中倒数第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
    }
  • 相关阅读:
    正则表达式
    特殊符号作用
    sed
    scp
    EOF
    env
    JAVA进阶5
    JAVA进阶4
    JAVA进阶3
    JAVA进阶2
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/14630293.html
Copyright © 2011-2022 走看看