当前位置:   article > 正文

#力扣LeetCode面试题 02.02. 返回倒数第 k 个节点 @FDDLC

#力扣LeetCode面试题 02.02. 返回倒数第 k 个节点 @FDDLC

题目描述:
https://leetcode-cn.com/problems/kth-node-from-end-of-list-lcci/

Java代码一:

class Solution {
    public int getNodeSum(ListNode head){
        int sum=0;
        while(head!=null){
            head=head.next;
            sum++;
        }
        return sum;
    }
    public int kthToLast(ListNode head, int k) {
        int count=getNodeSum(head)-k;
        while(count-->0){
            head=head.next;
        }
        return head.val;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

在这里插入图片描述

Java代码二:快慢指针

class Solution {
    public int kthToLast(ListNode head, int k) { //首末重合
        ListNode fast=head,slow=head;
        while(k-->0)fast=fast.next; //走k步
        if(fast==null)return head.val; //特判
        while(fast!=slow){
            slow=slow.next;
            fast=fast.next==null?head:fast.next;
            fast=fast.next==null?head:fast.next;
        }
        return fast.val; //slow.val亦可
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

在这里插入图片描述

Java代码三:等距同速指针

class Solution {
    public int kthToLast(ListNode head, int k) { //首末重合
        ListNode pioneer=head;
        while(k-->0)pioneer=pioneer.next;
        while(pioneer!=null){
            pioneer=pioneer.next;
            head=head.next;
        }
        return head.val;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

注:有人把这种方法也叫做快慢指针,我认为是不妥的~
在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/758834
推荐阅读
相关标签
  

闽ICP备14008679号