package com.patience.interview.huawei;
import java.util.Scanner;
/**
* 构造链表节点,获取倒数节点
* @author Green.Gee
* @date 2022/9/29 10:55
* @email green.gee.lu@gmail.com
*/
public class GetLinkNode {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
// 注意 hasNext 和 hasNextLine 的区别
while (in.hasNext()) { // 注意 while 处理多个 case
A(in);
// B(in);
}
}
// 倒序链表
static void B(Scanner in){
Integer n = in.nextInt();
ListNode hander = new ListNode();
for(int i = 0; i < n; i++){
ListNode node = new ListNode(in.nextInt(), hander.next);
hander.next = node;
}
int k = in.nextInt();
for(int i = 0; i < k; i++){
hander = hander.next;
}
System.out.println(hander.value);
}
// 正序链表快慢指针
static void A(Scanner in){
Integer n = in.nextInt();
ListNode hander = new ListNode();
ListNode temp = hander;
for(int i = 0; i < n; i++){
ListNode node = new ListNode(in.nextInt());
temp.next = node;
temp = temp.next;
}
int k = in.nextInt();
ListNode finalNode = slowAndFast(hander,k);
if(finalNode != null){
System.out.println(finalNode.value);
}else
System.out.println(0);
}
// slow and fast point
static ListNode slowAndFast(ListNode hander,int k){
if(hander == null) return null;
ListNode slow = hander,fast = hander;
for(int i = 0; i < k; i++){
if(fast == null) return fast;
fast = fast.next;
}
while(fast != null){
fast = fast.next;
slow = slow.next;
}
return slow;
}
static class ListNode {
int value;
ListNode next;
public ListNode(){
}
public ListNode(int value) {
this.value = value;
}
public ListNode(int value, ListNode next){
this.value = value;
this.next = next;
}
}
}
构造链表节点,获取倒数节点(链表数据结构 Java)
最新推荐文章于 2024-07-10 21:37:49 发布