题解 | #链表中倒数最后k个结点#

链表中倒数最后k个结点

https://www.nowcoder.com/practice/886370fe658f41b498d40fb34ae76ff9

/*class ListNode {
 *     val: number
 *     next: ListNode | null
 *     constructor(val?: number, next?: ListNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.next = (next===undefined ? null : next)
 *     }
 * }
 */
/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param pHead ListNode类 
 * @param k int整型 
 * @return ListNode类
 */
export function FindKthToTail(pHead: ListNode, k: number): ListNode {
    // write code here
    if (pHead == null) return pHead

    let p = pHead, count = 0, len = 0
    while (p !== null) {
        p = p.next
        len++
    }

    const target = len - k
    if (target < 0) return null
    p = pHead
    while (count < target) {
        p = p.next
        count++
    }
    return p
}

先用len统计链表总长度,倒数第k个结点的下标就是len - k,若len-k小于0,按要求返回空链表。否则,重新从表头遍历到len-k位置就是倒数第k个结点。

全部评论

相关推荐

评论
点赞
收藏
分享
牛客网
牛客企业服务