小鲨鱼的鲨鱼 2022-02-26 23:20 采纳率: 0%
浏览 24

java算法解决合并两个排序的链表的方法,为什么第一种方法时间会超时

问题遇到的现象和发生背景
public ListNode Merge(ListNode list1,ListNode list2) {
if(list1 == null)
            return list2;
        if(list2 == null)
            return list1;
        ListNode res = null;
        ListNode root = res;
         if(list1.val>list2.val){
              root=  res = list2;
                 res = res.next;
                list2 = list2.next;
            }
            else {
             root=  res = list1;
                res = res.next;
                list1 = list1.next;
            }

        while(list1 != null && list2 != null)
        {
            if(list1.val>list2.val){
                    res.next = list2;
                    res = res.next;
                    list2 = list2.next;
                    
            }
            else {
                res.next = list1;
                res = res.next;
                list1 = list1.next;
                
            }
                
        }
        if(list1 != null)
                res.next = list1;
        if(list2 != null)
                res.next = list2;
          return root;
    }
        

 public ListNode Merge(ListNode list1,ListNode list2) {
        if(list1 == null)
            return list2;
        if(list2 == null)
            return list1;
        
        
            ListNode res = null;
            ListNode root = null;

        while(list1 != null && list2 != null)
        {
            if(list1.val<list2.val){
                if(res == null){
                    root = res = list1;
                }
                else{
                     res.next = list1;
                    res = res.next;
                }
                   
                    list1 = list1.next;
                    
            }
            else {
                if(res == null){
                    root = res = list2;
                }
                else{
                     res.next = list2;
                res = res.next;
                }
               
                list2 = list2.next;
                
            }

        }
        if(list1 != null)
                res.next = list1;
        if(list2 != null)
                res.next = list2;
          return root;
    }


运行结果及报错内容

以上两种算法都是合并两个排序的链表的解决方法,为什么第一种算法会超时啊? 感觉相差无几,在idea下也运行时间也很长

  • 写回答

2条回答 默认 最新

  • 关注

    第一种方法是不是没判断list起始为空的情况,这种情况下好像会崩溃?

    评论

报告相同问题?

问题事件

  • 修改了问题 2月27日
  • 创建了问题 2月26日

悬赏问题

  • ¥15 vue请求不到数据,返回状态200,数据为html
  • ¥15 访问url时不会自动调用其 Servlet的doGet()
  • ¥15 用白鹭引擎开发棋牌游戏的前端为什么这么难找
  • ¥15 MATLAB解决问题
  • ¥35 哪位专业人士知道这是什么原件吗?哪里可以买到?
  • ¥15 关于#c##的问题:treenode反序列化后获取不到上一节点和下一节点,Fullpath和Handle报错
  • ¥15 一部手机能否同时用不同的app进入不同的直播间?
  • ¥20 输入import torch显示Intel MKL FATAL ERROR,系统驱动1%,: Cannot load mkl_intel_thread.dll.
  • ¥15 点云密度大则包围盒小
  • ¥15 nginx使用nfs进行服务器的数据共享