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.
Subscribe to see which companies asked this question
简单题
没有什么技术含量。
简单循环,codetime上面可能慢一点。
递归的代码量小很多,也很简洁。
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ public class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { ListNode headNode = new ListNode(0); ListNode result = new ListNode(0); headNode.next = result; ListNode nextNode = new ListNode(0); while(l1 != null || l2 != null) { nextNode = new ListNode(0); if(l1 == null){ nextNode.val = l2.val; l2 = l2.next; }else if(l2 == null){ nextNode.val = l1.val; l1 = l1.next; }else if(l1.val>l2.val){ nextNode.val = l2.val; l2 = l2.next; }else{ nextNode.val = l1.val; l1 = l1.next; } result.next = nextNode; result = result.next; } return headNode.next.next; } }
public ListNode mergeTwoLists(ListNode l1, ListNode l2){ if(l1 == null) return l2; if(l2 == null) return l1; if(l1.val < l2.val){ l1.next = mergeTwoLists(l1.next, l2); return l1; } else{ l2.next = mergeTwoLists(l1, l2.next); return l2; } }