21 合併兩個有序鍊錶

2021-08-22 00:18:44 字數 858 閱讀 9392

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。

示例:輸入:1->2->4, 1->3->4

輸出:1->1->2->3->4->4

原本想的是用19題的結構陣列那種方法來做:分別遍歷兩個鍊錶,建立結構儲存原始索引,val和指標,氣泡排序這個結構,更新索引,按照索引建立新的node。

題目沒有說l1和l2是否有可能為空,其實是需要考慮的情況。

後來想到兩個鍊錶都是已經排好順序的,不用鏈結,直接l2鍊錶插入l1感覺更方便。依次掃瞄l1、l2鍊錶,先判斷l2的node有沒有開頭小於l1的,若有則需要放在l1開頭,並且把l1的臨時指標向前移動;其實這個動作最多只有一次,之後的需要插入的node值都會大於等於l1臨時指標指向的node值。後面就是乙個個的將l2中的node插入進l1中。其中有l1先被掃瞄至結尾,但l2還有未插入的,只需將l2餘下的放在l1末尾就行。

初學,思路應該不好,方法比較壟長。但每次只靠自己想思路然後編出leetcode的題目都好興奮。

執行用時:8 ms

/**

* definition for singly-linked list.

* struct listnode

* };

*/class solution

while (temp20 != nullptr )

if (temp20->val < temp10->val)

else

else

break;

}if (temp20->val >= temp10->val)}}

return l1;

}};

21 合併兩個有序鍊錶

合併兩個有序鍊錶 將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4輸出 1 1 2 3 4 4比較簡單,比較大小,重新排序即可。created by hints on 2019 1 9.include using name...

21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4先確定合併鍊錶第乙個節點 在迴圈中同時遍歷兩個鍊錶,將後面其餘節點逐次比較,依大小次序連線到首節點之後,迴圈結束後可能有乙個鍊錶未遍歷完,將這個鍊錶剩...

21 合併兩個有序鍊錶

將兩個有序鍊錶合併為乙個新的有序鍊錶並返回。新煉表是通過拼接給定的兩個鍊錶的所有節點組成的。示例 輸入 1 2 4,1 3 4 輸出 1 1 2 3 4 4 分析 雙指標注意儲存頭節點 分類討論 definition for singly linked list.class listnode def...