2つのソートされたチェーンテーブルをマージ(剣指offer_プログラミング問題)
1829 ワード
タイトルの説明:
2つの単調に増加したチェーンテーブルを入力し、2つのチェーンテーブルの合成後のチェーンテーブルを出力します.もちろん、合成後のチェーンテーブルは単調で減少しない規則を満たす必要があります.
本題の知識点:チェーンテーブルの目的:2つのチェーンフォームが単調で減らないチェーンテーブルに調整されます.構想:与えられた2つのチェーンテーブルlist 1,list 2を十分に利用する.リストt 1,list 2をテールプラグ法により解体して新しいチェーンテーブルhead(先頭ノード)に組み立てる.ここでは、ヘッダノードcurr=new ListNode(0)が設定されている.最初のノードの操作を容易にするためです(後のノードと同じように、対応する値は意味がなく、任意に設定できます).ヘッドノードを使用するメリット:ヘッダノードは、操作の統一と利便性のために設けられており、最初の要素ノードの前に置くと、そのデータドメインは一般的に意味がありません(もちろん、チェーンテーブルの長さを格納したり、監視哨戒したりすることもできます). ヘッダノードが存在すると、最初の要素ノードの前にノードを挿入し、最初のノードを削除する操作は、他のノードの操作と統一される.ヘッダノードは、ヘッダノードの後ろの最初のノードである最初の要素のノードです. ヘッダノードはチェーンテーブルに必要ではありません.
コード:
このコードは再帰的ではありません.
牛客大神ピザおじさんの再帰バージョン(簡潔明瞭、コメントエリアでこの方法がうるさいと評価されている-^-):リンク:https://www.nowcoder.com/questionTerminal/d8b6b4358f774294a89de2a6ac4d9337出典:牛客网大神コード:
2つの単調に増加したチェーンテーブルを入力し、2つのチェーンテーブルの合成後のチェーンテーブルを出力します.もちろん、合成後のチェーンテーブルは単調で減少しない規則を満たす必要があります.
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
本題の知識点:チェーンテーブルの目的:2つのチェーンフォームが単調で減らないチェーンテーブルに調整されます.構想:与えられた2つのチェーンテーブルlist 1,list 2を十分に利用する.リストt 1,list 2をテールプラグ法により解体して新しいチェーンテーブルhead(先頭ノード)に組み立てる.ここでは、ヘッダノードcurr=new ListNode(0)が設定されている.最初のノードの操作を容易にするためです(後のノードと同じように、対応する値は意味がなく、任意に設定できます).ヘッドノードを使用するメリット:
コード:
public class Solution {
public ListNode Merge(ListNode list1,ListNode list2) {
ListNode head,curr;
curr = new ListNode(0);//
head = curr;// ,
while(list1!=null && list2!=null){//
if(list1.val
このコードは再帰的ではありません.
牛客大神ピザおじさんの再帰バージョン(簡潔明瞭、コメントエリアでこの方法がうるさいと評価されている-^-):リンク:https://www.nowcoder.com/questionTerminal/d8b6b4358f774294a89de2a6ac4d9337出典:牛客网大神コード:
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1 == null){
return list2;
}
if(list2 == null){
return list1;
}
if(list1.val <= list2.val){
list1.next = Merge(list1.next, list2);
return list1;
}else{
list2.next = Merge(list1, list2.next);
return list2;
}
}