隨筆-合併兩個有序單鏈表(遞迴/非遞迴)
阿新 • • 發佈:2018-12-18
題目:合併兩個有序單鏈表
遞迴:
/* public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } }*/ public class Solution { 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; } } }
非遞迴:
連結:https://www.nowcoder.com/questionTerminal/d8b6b4358f774294a89de2a6ac4d9337 來源:牛客網 public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { ListNode newHead = new ListNode(-1); ListNode current = newHead; while (list1 != null && list2 != null) { if (list1.val < list2.val) { current.next = list1; list1 = list1.next; } else { current.next = list2; list2 = list2.next; } current = current.next; } if (list1 != null) current.next = list1; if (list2 != null) current.next = list2; return newHead.next; } }