7.12 不能一次 AC!
7.13 一次 AC

题目描述


原题链接:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。
image.png

解题思路


K神题解:https://leetcode-cn.com/problems/he-bing-liang-ge-pai-xu-de-lian-biao-lcof/solution/

  • 怎么说呢,一开始我是想以单链表 l1 为基准,把 l2 往 l1 里边插,但感觉有点力不从心!

  • 看了题解,卧槽,原来还可以再创建个头节点,然后把 l1 和 l2 往里面插呀!还是太年轻了!

  • 并且,创建一个新的头节点可以用 new 的方式去创建!一开始怎么也想不到,干!Java 中的节点也是一个类呀

  • 7.12 题目做错的教训:你可以用第三个链表去接其它两个链表,但你得记得用临时的节点去接!你如果直接用第三个链表的头节点直接去接,到最后你也只能返回第三个链表的最后一个节点!切记!

    1. class Solution {
    2. public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    3. ListNode res = new ListNode(0);
    4. ListNode tmp = res;
    5. while(l1 != null && l2 != null) {
    6. if(l1.val < l2.val){
    7. tmp.next = l1;
    8. tmp = tmp.next;
    9. l1 = l1.next;
    10. }else{
    11. tmp.next = l2;
    12. tmp = tmp.next;
    13. l2 = l2.next;
    14. }
    15. }
    16. if(l1 == null) {
    17. tmp.next = l2;
    18. }else {
    19. tmp.next = l1;
    20. }
    21. return res.next;
    22. }
    23. }