题源 👉 输出单向链表中倒数第k个结点_牛客题霸_牛客网 (nowcoder.com)
题目描述:
思路:
方法一:
对于单链表,要输出倒数第 k 个结点的值,即正数第 n - k + 1 个结点,其中n为单链表长度。而单链表长度已在输入中给出。
方法二:
不建立链表直接把输入放在数组中处理。
具体实现:
方法一:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (sc.hasNext()){
int len = sc.nextInt(); // 结点数
// 生产链表
ListNdoe head = new ListNdoe(-1); // 头结点
ListNdoe p = head;
for(int i = 0; i < len; i++){
ListNdoe node = new ListNdoe(sc.nextInt());
p.next = node;
p = p.next;
}
int k = sc.nextInt();
p = head;
// 倒数第 k个结点即正数第 len - k + 1个
int cnt = 0, t = len - k + 1;
while (cnt < t){
p = p.next;
cnt++;
}
System.out.println(p.val);
}
}
}
class ListNdoe {
int val;
ListNdoe next;
public ListNdoe(int val){
this.val = val;
this.next = null;
}
}
时间复杂度:
O(n)