- 题目:输入一个链表,输出该链表中倒数第K个节点;为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第一个结点。
- 题目分析:
- 代码如下:
public class LinkK {
public static LinkNode getReciprocalK(LinkNode linkNode,int k){
//头指针
LinkNode head=linkNode;
//与头指针相隔k的尾指针
LinkNode behind=null;
//让头指针与尾指针相隔距离为k
for (int i=0;i<k-1;i++){
head=head.next;
}
behind=linkNode;
//头指针和尾指针一同向下遍历,只到头指针到达链表尾节点
while (head.next!=null){
head=head.next;
behind=behind.next;
}
return behind;
}
public static void main(String[] args) {
LinkNode head1 = new LinkNode(1);
LinkNode head2 = new LinkNode(2);
LinkNode head3 = new LinkNode(3);
LinkNode head4 = new LinkNode(4);
LinkNode head5 = new LinkNode(5);
head1.next=head2;
head2.next=head3;
head3.next=head4;
head4.next=head5;
LinkNode reciprocalK = getReciprocalK(head1, 4);
System.out.println(reciprocalK.data);
}
}
github代码地址;https://github.com/iot-wangshuyu/offer/tree/master/code/src/linkK
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由半码博客整理,本文链接:https://www.bmabk.com/index.php/post/15805.html