题解 | #合并两个排序的链表#

合并两个排序的链表

https://www.nowcoder.com/practice/d8b6b4358f774294a89de2a6ac4d9337

//代码先跑起来才是最重要的,最后再优化代码,不然容易蒙杯
//先是pHead代表一个节点,一个个赋值,后面怎么一下子一个pHead能把全部都赋值过来呀?
//考虑各种情况的输出结果
import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param pHead1 ListNode类 
     * @param pHead2 ListNode类 
     * @return ListNode类
     */
    public ListNode Merge (ListNode pHead1, ListNode pHead2) {
        // write code here
        // 数词比较然后链接,时间复杂度太高
        if(pHead1==null) return pHead2;
        if(pHead2==null) return pHead1;
        // 借助新链表,循环条件为两链表都不为空
        ListNode newlist = new ListNode(0);
        ListNode cur = newlist;
        while(pHead1!=null&&pHead2!=null){
            if(pHead1.val > pHead2.val){
                cur.next = pHead2;
                pHead2 = pHead2.next;
            }else{
                cur.next = pHead1;
                pHead1 = pHead1.next;
            }
            //每次链接一个节点
            cur = cur.next;
        }
        //可能还有链表剩余节点
        // cur.next = pHead1!=null? pHead1:null;
        // cur.next = pHead2!=null? pHead2:null;
        if (pHead1 != null) {
            cur.next = pHead1;
        }
 
        if(pHead2 != null){
            cur.next = pHead2;
        }

        return newlist.next;
        
    }
}

全部评论

相关推荐

沟头学院:无关比赛不要写,这样会显着你主次不分,比赛不要撒谎,有哪些就写那些,创新创业建议删除。技能特长可以适当夸大。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务