本文主要是介绍剑指Offer14——链表中的倒数第k个结点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
/*链表中的倒数第k个结点* * 输入一个链表,输出该链表中倒数第k个结点。* * 思路:* 两个指针p1,p2,开始都指向头结点* 先让p2走k步* 然后p1,p2同时向下走* 当p2指向null的时候,p1就是倒数第k个节点* * * */class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;}
}
class ListNode {int val;ListNode next = null;ListNode(int val) {this.val = val;}
}
public class Offer14 {public ListNode FindKthToTail(ListNode head,int k) {if(head==null )return null;//快慢指针ListNode p1=head;ListNode p2=head;//p2先走k步while(k>0 && p2 !=null) {p2=p2.next;k--;}//p2指向head说明k<=0,p2=null&&k>0说明k超过了链表的长度if(p2==head || (p2==null && k>0)) {return null;}//p1p2一起动while(p2!=null) {p1=p1.next;p2=p2.next;}return p1;}
}
这篇关于剑指Offer14——链表中的倒数第k个结点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!