單鏈表的面試演算法題[更新中...]
阿新 • • 發佈:2021-08-06
1. 新浪面試:請設計一個單鏈表,給定頭結點和整數k,返回單鏈表倒數第k個結點。
程式碼[Java實現]:
/** * 返回單鏈表倒數第k個結點: [新浪面試題 & 劍指Offer.22] * 思路:1. 接收頭結點和k值 * 2. 整體遍歷,得到連結串列長度 * 3. 再次遍歷,返回(len-k)個值即為倒數第k個結點 * @author KyleHsu */ public Node lastKNode(Node head,int k){ // 沒有結點,沒有找到 if (head.next == null){ return null; } int len = SinglelinkedlistTest.getLen(head); // 如果給的k不在連結串列長度範圍內,肯定找不到 if (k<=0 || k>len){ return null; } Node temp = head.next; for (int i = 0; i < (len-k); i++) { temp = temp.next; } return temp; } /** * 返回單鏈表的有效節點個數 * @author KyleHsu */ public static int getLen(Node head){ if (head.next == null){ return 0; } int length = 0; Node temp = head.next; while (temp != null){ temp = temp.next; length++; } return length; }