zoukankan      html  css  js  c++  java
  • 合并两个有序链表(力扣第21题)

    题目:

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

    示例:

    输入:1->2->4, 1->3->4
    输出:1->1->2->3->4->4

    解法一:非递归,循环遍历合并

         public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    
            if (l1 == null && l2 == null){
                return null;
            }
            if (l1 == null || l2 == null){
                return l1==null?l2:l1;
            }
    
            ListNode p = l1;
            ListNode q = l2;
            ListNode temp = new ListNode(0);
            ListNode pp = temp;
            while (p != null && q != null){
                
                if (p.val <= q.val){
                    pp.next = p;
                    p = p.next;
                }else {
                    pp.next = q;
                    q = q.next;
                }
                pp = pp.next;
            }
            
            pp.next = (p!=null)?p:q;
            return temp.next;
        }

    解法二:递归,参考自cyc2018

        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;
        }
        }
  • 相关阅读:
    运算符优先级
    Tips—查询某结构体
    在线词典--(一、流程分析)
    数据库—SQLite3
    回调函数(转载)
    UNIX域套接字
    进程间通信小结
    HDU_oj_2027 统计元音
    HDU_oj_2026 首字母变大写
    HDU_oj_2025 查找最大字母
  • 原文地址:https://www.cnblogs.com/yxym2016/p/13431905.html
Copyright © 2011-2022 走看看