/** * 输入一个链表,输出该链表中倒数第k个结点。 * 解:设置一把长度为k的尺子在链表中移动,移动到最后的时候,最左端对应的是倒数第k个节点 */ public class Solution5 { public static void main(String[] args) { Node node = new Node(1,new Node(2,new Node(3,new Node(4,new Node(5,null))))); Node node1 = get(node,2); System.out.println(node1.data); } public static Node get(Node node, int k) { if (null == node || k < 0) return null; Node p1 = null; int i = 0, i1 = 0, i2 = k;//定义三个指针,i表示链表的指针,i1表示尺子左边指针,i2表示尺子右边指针 while (null != node.next) { if (i == 0){//获取链表头,为后面指针做准备 p1 = node; } if (i == i2){//形成尺子后,开始移动 p1 = p1.next; i1++; i2++; } i++; node = node.next; } if (i2 - i1 != k)//判定是否超出了范围 return null; return p1; } } class Node { Object data; Node next; public Node(Object data, Node next) { this.data = data; this.next = next; } }
输入一个链表,输出该链表中倒数第k个结点。
最新推荐文章于 2022-07-18 14:39:02 发布