【Java面试题】链表中倒数第k个结点

【题目】:

输入一个链表,输出该链表中倒数第k个结点。

【示例】:
已知链表,给出k=3

123456789 10

找出该链表倒数第3个结点。

结果:12345678

【关键点】: 链表遍历

  • 两个链表指向head,pre先走k-1个节点;
  • 第k个数时,pre继续走,last从头开始走;
  • pre走到完,last为倒数第k个。
    在这里插入图片描述

【Java】:

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode FindKthToTail(ListNode head,int k) {
        while(head==null||k<=0)return null;
        ListNode pre = head;
        ListNode last = head;
        for(int i=1;i<k;i++){//pre先走k-1个数
            if(pre.next!=null)
                pre = pre.next;
            else return null;
        }
        while(pre.next!=null){//第k个数时,pre继续走,last从头开始走;pre走到完,last为倒数第k个
            pre = pre.next;
            last = last.next;
        }
        return last;//返回last链表
    }
}

发布了195 篇原创文章 · 获赞 335 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/cungudafa/article/details/101164282