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

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

思路

  • 尾插法建立单链表
  • 双指针找倒数第 k 个节点
import java.util.*;

class ListNode {
    int val;
    ListNode next;

    ListNode() {
        this(0, null);
    }

    ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNextInt()) {
            ListNode dummyHead = new ListNode();
            ListNode tail = dummyHead;
            int n = in.nextInt();
            // 建表
            for (int i = 0; i < n; i++) {
                tail.next = new ListNode(in.nextInt(), null);
                tail = tail.next;
            }
            tail.next = null;
            int k = in.nextInt();
            // 双指针
            // 1、fast先走k个节点
            ListNode fast = dummyHead;
            while (k-- > 0 && fast != null) {
                fast = fast.next;
            }
            // 2、二者同时后移
            ListNode slow = dummyHead;
            while (fast != null) {
                fast = fast.next;
                slow = slow.next;
            }
            System.out.println(slow.val);
        }
        in.close();
    }
}
全部评论

相关推荐

点赞 评论 收藏
转发
点赞 收藏 评论
分享
牛客网
牛客企业服务