美文网首页
链表中倒数第k个节点

链表中倒数第k个节点

作者: 曾大稳丶 | 来源:发表于2022-05-12 09:41 被阅读0次

题目链接: https://leetcode.cn/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof/

image.png

题目解析

  1. 遍历的方式计算出链表的长度n,然后在遍历到第n-k的位置即可。
class Solution {
    public ListNode getKthFromEnd(ListNode head, int k) {
        int n = 0;
        ListNode node = null;

        for (node = head; node != null; node = node.next) {
            n++;
        }
        for (node = head; n > k; n--) {
            node = node.next;
        }

        return node;
    }
}

复杂度分析
空间复杂度: O(1)。
时间复杂度: O(N)。

  1. 利用快慢指针,遍历一次即可。fast指针比slow指针慢k步,当fast到尾的时候,slow的就是需要的值。
    class Solution {
    public ListNode getKthFromEnd(ListNode head, int k) {
    ListNode fast = head;
    ListNode slow = head;

     while (fast != null && k > 0) {
         fast = fast.next;
         k--;
     }
     while (fast != null) {
         fast = fast.next;
         slow = slow.next;
     }
    
     return slow;
    

    }
    }

复杂度分析
空间复杂度: O(1)。
时间复杂度: O(N)。

相关文章

网友评论

      本文标题:链表中倒数第k个节点

      本文链接:https://www.haomeiwen.com/subject/pejsurtx.html