1. 程式人生 > >劍指Offer-連結串列中倒數第k個節點

劍指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);
	}

}