题目描述:

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

知识点:

  • 链表,归并排序

解题思路:

  • 这道题是一道典型的可以使用归并排序思路的题,只不过由原来数组长度判断变成了由指针判断,两个指针都指向空为止
  • 比较两个指针所指值的大小,然后移动指针

解题代码:

  1. function Merge(pHead1, pHead2)
  2. {
  3. // write code here
  4. let p1 = pHead1;
  5. let p2 = pHead2;
  6. let l3 = new ListNode(0);
  7. let p3 = l3;
  8. while(p1 || p2){
  9. if(p1 && p2) {
  10. if(p1.val < p2.val) {
  11. p3.next = new ListNode(p1.val);
  12. p3 = p3.next;
  13. p1 = p1.next;
  14. }else {
  15. p3.next = new ListNode(p2.val);
  16. p3 = p3.next;
  17. p2 = p2.next;
  18. }
  19. }else if(p1) {
  20. p3.next = new ListNode(p1.val);
  21. p3 = p3.next;
  22. p1 = p1.next;
  23. }else if(p2){
  24. p3.next = new ListNode(p2.val);
  25. p3 = p3.next;
  26. p2 = p2.next;
  27. }
  28. }
  29. return l3.next;
  30. }