LeetCode(21): 合并两个有序链表

Dear 丶 2021-10-13 22:56 489阅读 0赞

将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

20190816135757320.png

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njg4MTQz_size_16_color_FFFFFF_t_70

  1. public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
  2. if(l1 == null) {
  3. return l2;
  4. }
  5. if(l2 == null) {
  6. return l1;
  7. }
  8. if(l1.val < l2.val) {
  9. l1.next = mergeTwoLists(l1.next, l2);
  10. return l1;
  11. } else {
  12. l2.next = mergeTwoLists(l1, l2.next);
  13. return l2;
  14. }
  15. }

20190816135856200.png

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM2Njg4MTQz_size_16_color_FFFFFF_t_70 1

  1. public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
  2. // maintain an unchanging reference to node ahead of the return node.
  3. ListNode prehead = new ListNode(-1);
  4. ListNode prev = prehead;
  5. while (l1 != null && l2 != null) {
  6. if (l1.val <= l2.val) {
  7. prev.next = l1;
  8. l1 = l1.next;
  9. } else {
  10. prev.next = l2;
  11. l2 = l2.next;
  12. }
  13. prev = prev.next;
  14. }
  15. // exactly one of l1 and l2 can be non-null at this point, so connect
  16. // the non-null list to the end of the merged list.
  17. prev.next = l1 == null ? l2 : l1;
  18. return prehead.next;
  19. }

20190816140143550.png

发表评论

表情:
评论列表 (有 0 条评论,489人围观)

还没有评论,来说两句吧...

相关阅读