牛客华为算法-HJ51 输出单向链表中倒数第k个结点

我爱海鲸 2025-04-29 12:56:20 暂无标签

简介华为OD

输出单向链表中倒数第k个结点_牛客题霸_牛客网

描述

输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。

链表结点定义如下:
struct ListNode
{
    int val;
    ListNode* m_pNext;
};
正常返回倒数第k个结点指针。

输入描述:

每一个测试用例会有多组。每一组的测试用例格式如下:
第一行输入链表结点个数n1≤n≤1000  
第二行输入长度为n的数组val,表示链表的每一项,0≤val[i]≤10000 
第三行输入k的值, k≤n 

输出描述:

每一组,输出倒数第k个结点的值

解法一(java):

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        // while (in.hasNextInt()) { // 注意 while 处理多个 case
        //     int a = in.nextInt();
        //     int b = in.nextInt();
        //     System.out.println(a + b);
        // }
        while (in.hasNext()) {
            int n = in.nextInt();
            int[] array = new int[n];
            for (int i = 0; i < n ; i++) {
                array[i] = in.nextInt();
            }
            int k = in.nextInt();
            int index = n - k;
            System.out.println(array[index]);
        }


    }
}

思路:将数据放到一个数组中,然后计算输出的索引,打印值即可。

你好:我的2025