劍指offer之鍊表續

2022-08-11 15:03:13 字數 916 閱讀 2646

面試題17:合併兩個有序鍊錶

這道題用遞迴,很容易實現,但是一定要注意**魯棒性

下面是原始碼:

public static listnode mergelist(listnode head1,listnode head2)

else

} if(head1.valhead2.val)

return newhead;

}

通過這道題想到如果是有序陣列的話,該如何合併,這裡不能用遞迴,主要是因為陣列長度的問題

可以借鑑劍指offer第4題,替換空格。原始碼就不賦了,之前的部落格中有提到過。

面試題15:鍊錶中的倒數第k 個結點

當乙個指標無法解決問題的時候,考慮嘗試兩個或三個指標,同樣求鍊錶的中間結點以及判斷單向鍊錶是否有環都可以考慮使用兩個指標。

這道題可以考慮兩個指標,乙個在前,另乙個在他k-1的位置,但是要注意如果k 為0,頭結點為空,或者鍊錶長度小於k,這些情況

下面附上程式的源**:

public static listnode findknode(listnode head, int k)

listnode p1 = head;

listnode p2 = head;

for(int i =0;i面試題16:翻轉鍊錶

這道題用到了三個指標,只要保證翻轉的時候鍊錶不斷就可以.

這道題也是leetcode上top10的題目;

reverse a singly linked list.

下面附上**:

public listnode reverselist(listnode head)

n.next = l;

l = n;

n = r;

}return newhead;

}

《劍指offer 之鍊錶題目

這幾天在看 劍指offer 寫的很好,跟july的各有千秋,更加注重歸納總結,筆試面試臨時抱佛腳,決定要啃下這其中的46道題目。ok,把每道題目自己實現,相同的歸成一類。這次把所有的與list相關的題目列出來。思路 從尾到頭列印list的話,考慮用stack先把各節點儲存起來,遍歷完以後再將stac...

劍指offer之反轉鍊錶

題目介紹 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。題目比較簡短,所以直接上 public class listnode public class solution listnode curnode head.next head.next null listnode resultnode hea...

劍指Offer之反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。hint 請務必使用鍊錶 輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 0 n 1000 代表將要輸入的鍊錶的個數。輸入的第二行包含n個整數t 0 t 1000000 代表鍊錶元素。輸出 對應每個...