剑指 Offer 22. 链表中倒数第k个节点

题目:

思路:

【1】其实这道题和 19. 删除链表的倒数第 N 个结点 这题差不多,不过一个是要删除但是返回的依旧是首节点,而本体要求的是返回倒数第几位的节点。

【2】其次这道题的限制条件没有给出的很明确,如果K比链表长度还大呢。貌似都不需要处理,尬的一批。

代码展示:

//时间0 ms击败100%
//内存39.4 MB击败72.76%
/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode getKthFromEnd(ListNode head, int k) {
        ListNode cur = head;
        int length = 0;
        while (cur != null) {
            length++;
            cur = cur.next;
        }
        cur = head;
        for (int i = 1; i < length - k + 1; i++) {
            cur = cur.next;
        }
        return cur;
    }
}

 

posted @ 2023-02-10 17:12  忧愁的chafry  阅读(12)  评论(0编辑  收藏  举报