摘要:題目要求翻譯過來就是將兩個(gè)有序的鏈表組合成一個(gè)新的有序的鏈表思路一循環(huán)在當(dāng)前兩個(gè)鏈表的節(jié)點(diǎn)都是非空的情況下比較大小,較小的添入結(jié)果鏈表中并且獲得較小節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)。
題目要求
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
翻譯過來就是:將兩個(gè)有序的鏈表組合成一個(gè)新的有序的鏈表
思路一:循環(huán)在當(dāng)前兩個(gè)鏈表的節(jié)點(diǎn)都是非空的情況下比較大小,較小的添入結(jié)果鏈表中并且獲得較小節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)。這樣比較直至至少遍歷完一個(gè)鏈表。再將剩下的鏈表添至結(jié)果鏈表的末端
public class MergeTwoSortedLists_21 { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode start = new ListNode(0); ListNode temp = new ListNode(0); start.next = temp; while(l1!=null && l2!=null){ if(l1.val <= l2.val){ temp.next = l1; l1 = l1.next; }else{ temp.next = l2; l2 = l2.next; } temp = temp.next; } if(l1!=null){ temp.next = l1; } if(l2!=null){ temp.next = l2; } return start.next.next; } public class ListNode{ int val; ListNode next; ListNode(int x) { val = x; } } }思路二:遞歸
每次比較得到兩個(gè)節(jié)點(diǎn)中較小的節(jié)點(diǎn)作為結(jié)果返回,并繼續(xù)對剩下來的鏈表重新獲得較小節(jié)點(diǎn)。
public class MergeTwoSortedLists_21 { public ListNode mergeTwoLists_recursive(ListNode l1, ListNode l2){ if(l1==null){ return l2; }else if (l2==null){ return l1; } ListNode mergeHead; if(l1.val <= l2.val){ mergeHead = l1; mergeHead.next = mergeTwoLists_recursive(l1.next, l2); }else{ mergeHead = l2; mergeHead.next = mergeTwoLists(l1, l2.next); } return mergeHead; } public class ListNode{ int val; ListNode next; ListNode(int x) { val = x; } } }
想要了解更多開發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號!將會(huì)不定期的發(fā)放福利哦~
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/66984.html
摘要:題目詳情題目要求我們將兩個(gè)有序鏈表合成一個(gè)有序的鏈表。輸入輸出想法首先要判斷其中一個(gè)鏈表為空的狀態(tài),這種情況直接返回另一個(gè)鏈表即可。每次遞歸都會(huì)獲得當(dāng)前兩個(gè)鏈表指針位置的值較小的節(jié)點(diǎn),從而組成一個(gè)新的鏈表。 題目詳情 Merge two sorted linked lists and return it as a new list. The new list should be mad...
摘要:將兩個(gè)有序鏈表合并為一個(gè)新的有序鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。無非是依次將兩個(gè)鏈表每個(gè)節(jié)點(diǎn)的值對比,取出值較小的節(jié)點(diǎn),添加到新鏈表末尾。將剩余鏈表傳回遞歸函數(shù)。 將兩個(gè)有序鏈表合并為一個(gè)新的有序鏈表并返回。新鏈表是通過拼接給定的兩個(gè)鏈表的所有節(jié)點(diǎn)組成的。 Merge two sorted linked lists and return it as a n...
摘要:什么意思呢比如上方合并鏈表的代碼,分別明確函數(shù)的參數(shù)和返回值是什么參數(shù)是兩個(gè)合并的鏈表結(jié)點(diǎn)頭結(jié)點(diǎn)。返回值是合并后的鏈表。 Time:2019/4/9Title: Merge Two Sorted ListsDifficulty: EasyAuthor: 小鹿 題目:Merge Two Sorted Lists Merge two sorted linked lists and re...
摘要:注意因?yàn)槎阎惺擎湵砉?jié)點(diǎn),我們在初始化堆時(shí)還要新建一個(gè)的類。代碼初始化大小為的堆拿出堆頂元素將堆頂元素的下一個(gè)加入堆中 Merge Two Sorted Lists 最新更新請見:https://yanjia.me/zh/2019/01/... Merge two sorted linked lists and return it as a new list. The new list...
摘要:分治算法遞歸每層操作分解將原問題分解成一系列的子問題。分治算法滿足的條件可分解原問題與分解成的小問題具有相同的模式無關(guān)聯(lián)原問題分解成的子問題可以獨(dú)立求解,子問題之間沒有相關(guān)性,這一點(diǎn)是分治算法跟動(dòng)態(tài)規(guī)劃的明顯區(qū)別。 Time:2019/4/10Title: Merge K Sorted ListsDifficulty: DifficultyAuthor: 小鹿 題目:Merge K...
閱讀 3835·2021-10-12 10:12
閱讀 1464·2021-10-11 10:58
閱讀 2301·2021-10-09 10:01
閱讀 2612·2021-09-24 09:48
閱讀 2708·2021-09-09 11:38
閱讀 3533·2019-08-30 15:44
閱讀 1730·2019-08-30 14:22
閱讀 526·2019-08-29 12:42