题解 | #输出单向链表中倒数第k个结点#

输出单向链表中倒数第k个结点

https://www.nowcoder.com/practice/54404a78aec1435a81150f15f899417d

先创建链表,再用双指针,比如要获取倒数第n个,2个指针初始都指向头结点的下一个结点(头结点无数据)

则一个指针先遍历到第n个,另一个不动,然后两个指针一起遍历,直到先出发的指针到达尾结点,那么此时后出发的指针指向的结点就是倒数第n个结点

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNext()) {
            int num = sc.nextInt();
            LinkedNode head = new LinkedNode();
            LinkedNode temp = head;
            for (int i = 0; i < num; i++) {
                int cur = sc.nextInt();
                LinkedNode curNode = new LinkedNode(cur, null);    // 尾插法
                temp.next = curNode;
                temp = curNode;
            }
            int n = sc.nextInt();
            head = head.next;
            LinkedNode target = head;
            // 拉开距离
            while (n > 0) {
                n--;
                head = head.next;
            }
            while (head != null) {
                head = head.next;
                target = target.next;
            }
            System.out.println(target.value);
        }
    }
}

class LinkedNode {
    int value;
    LinkedNode next;

    public LinkedNode() {

    }

    public LinkedNode(int value, LinkedNode next) {
        this.value = value;
        this.next = next;
    }
}

全部评论

相关推荐

用微笑面对困难:你出于礼貌叫了人一声大姐,大姐很欣慰,她真把你当老弟
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务