剑指Offer-链表中倒数第k个节点

题目描述

输入一个链表,输出该链表中倒数第k个结点。

题解:先统计链表的总节点数,然后求出倒数第k个节点是顺序遍历的第几个节点。可以采用线性表存储每一个位置的节点,然后查找则比较快些,不用再遍历链表。

import java.util.ArrayList;
import java.util.List;
public class Solution {
 public ListNode FindKthToTail(ListNode head, int k) {
		//判断输入的是不是为空的链表,或者是不是倒数第0个
		if(head == null || k == 0) return null;
		//获取首节点
		ListNode node = head;
		//将遍历的节点放入线性表(基于数组实现,提取快)中
		List<ListNode> nodes = new ArrayList<>();
		while(node != null) {
			nodes.add(node);
			node = node.next;
		}
		//判断链表长度跟倒数的k进行对比,相比较
		if(nodes.size() - k < 0) {
			return null;
		}
		//返回倒数第k个
		return nodes.get(nodes.size() - k);
	}

}

猜你喜欢

转载自blog.csdn.net/qq_39290830/article/details/81739554