链表第倒数K个结点-剑指offer-Java

博客围绕输入链表输出倒数第k个结点的问题展开。解题思路是用两个指针,先将一个指针移动k - 1步,再让两个指针一起移动,当一个指针到尾部时,另一个指针就在倒数第k个结点位置,还给出了具体的Java代码实现。

题目描述:输入一个链表,输出该链表中倒数第k个结点。

解题思路:使用两个指针,初始化两个指针都带head,然后将其中一个指针移动k-1步,移动到k个结点的部分,然后两个结点一起移动,当其中一个指针到达尾部的时候,另一个指针恰好在倒数第k个结点的位置。

  1. /*
  2. public class ListNode {
  3.     int val;
  4.     ListNode next = null;
  5.     ListNode(int val) {
  6.         this.val = val;
  7.     }
  8. }*/
  9. public class Solution {
  10.     public ListNode FindKthToTail(ListNode head,int k) {
  11.         if(k<=0 || head == null)
  12.             return null;
  13.         ListNode pre = head;
  14.         ListNode last = head;
  15.      for(int i=1;i<k;i++){
  16.            if(last.next!=null)
  17.              last = last.next;
  18.         else
  19.             return null;
  20.      }
  21.       while(last.next != null)
  22.       {
  23.           pre = pre.next;
  24.           last = last.next;
  25.       }
  26.         return pre;
  27.     }
  28. }

扫码关注一起随时随地学习!!!就在洋葱攻城狮,更多精彩,等你来!!

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洋葱ycy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值