題目描述:
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。
題解:
我們已知是兩個遞增的鍊錶,需要把他合併成乙個遞增的鍊錶。
(1)我們需要乙個結果鍊錶,表示最後合併後的鍊錶。
(2)遍歷兩個鍊錶,如果 cur1 < cur2,那麼就說明 list1 的當前結點小於 list2 的當前結點,那麼就需要把 cur1 排在前面,同時 cur1 也要後移。如果 cur1 >= cur2,那麼就說明 list1 的當前結點大於 list2 的當前結點,那麼就需要把 cur2 排在前面,同時 cur2 也要後移。
(3)我們需要注意的是,結果鍊錶要繼續合併鍊錶,那麼就需要乙個 last 來標記當前結果鍊錶的最後乙個結點。last.next = cur ,就可以直接將我們比較得到的資料放置在鍊錶末尾。
(4)重複步驟2,直至其中乙個鍊錶遍歷結束。
遍歷至 cur2 為空時,直接將 cur1 放置 res鍊錶最末尾/。
最終得到合併之後的遞增鍊錶
//結果鍊錶
listnode last = null;
//結果鍊錶的最後乙個結點
while
(cur1 != null && cur2 != null)
else
// 更新 last 和 cur1
last = cur1;
cur1 = cur1.next;
}else
else
// 更新 last 和 cur2
last = cur2;
cur2 = cur2.next;
}// 更新位置之後,必然會在某時某個鍊錶遍歷結束
// 如果 cur1 遍歷結束,則直接把剩下的 cur2 跟在後面
if(cur1 != null)
else
}return res;
}
JZ16 合併兩個排序的鍊錶
題目描述 輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。eg 輸入,輸出 題外話 小范說合在一起,再比大小不就完事了,這顯然是乙個簡單的方法,但不智慧型。官方解法 1.迭代版本求解 初始化 定義cur指向新鍊錶的頭結點 操作 1.如果l1指向的結點值小於...
合併兩個排序的列表
輸入兩個單調遞增的鍊錶,輸出兩個鍊錶合成後的鍊錶,當然我們需要合成後的鍊錶滿足單調不減規則。輸入 返回值 由於兩個鍊錶都是遞增的,所以我們可以在遍歷的同時,判斷每個鍊錶當前各自值的大小,取出較小的那個,作為新鍊錶的結點,否則取另乙個,直到乙個鍊錶為空,將剩下乙個鍊錶拼接至新鍊錶尾端 注意 建立鍊錶使...
17 合併兩個排序的列表
一般的寫法 public class solution else p p.next if list1 null if list2 null p.next null return head.next 但是,我這樣並不是乙個好答案,因為我每一次都進行了new的操作,浪費了大量的空間!進行簡化後,如下 p...