劍指Offer-連結串列中倒數第k個節點
阿新 • • 發佈:2018-12-04
題目描述
輸入一個連結串列,輸出該連結串列中倒數第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); } }