一亩三分地论坛

 找回密码
 获取更多干货,去instant注册!

扫码关注一亩三分地公众号
查看: 1786|回复: 2
收起左侧

[Leetcode] Merge sort list, runtime error,哪里错了呢

[复制链接] |试试Instant~ |关注本帖
dreamhit 发表于 2014-3-30 15:43:23 | 显示全部楼层 |阅读模式

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?获取更多干货,去instant注册!

x
本帖最后由 dreamhit 于 2014-3-30 15:47 编辑

在本地电脑上运行可以输出正确结果,但是submit后 总是提示 Runtime Error Last executed input:{}。
请问这错误是什么意思,如何改呢? 谢谢了 ~

题目:Sort a linked list in O(n log n) time using constant space complexity.public class Solution {
    public ListNode sortList(ListNode head) {
        if(head == null)
            return null;
        int len = 0;
        ListNode curr = head;
        while(curr!=null){
            curr = curr.next;
            len++;
        }
        return sortList(head, len);
    } // end method

    ListNode sortList(ListNode head, int len){
        if(len==1){
            head.next = null;
            return head;
        }
        if(len > 1){
            int mid = len/2;
            ListNode part1 = head;
            ListNode part2 = head;
            while(mid!=0){
                mid--;
                part2 = part2.next;
            }
            mid =len/2;
            ListNode list1 = sortList(part1, mid);
            ListNode list2 = sortList(part2, len-mid);
            ListNode newlist = merge(list1, list2);
            return newlist;
        }
        return null;
    } // end method

    // merge two sorted list
    ListNode merge(ListNode list1, ListNode list2) {
                if (list1 == null)
                        return list2;
                if (list2 == null)
                        return list1;

                ListNode head=null;
                if (list1.data < list2.data) {
                        head = list1;
                } else {
                        head = list2;
                        list2 = list1;
                        list1 = head;
                }
                while (list1.next != null && list2 != null) {
                        if (list1.next.data <= list2.data) {
                                list1 = list1.next;
                        } else {
                                ListNode tmp = list1.next;
                                list1.next = list2;
                                list2 = tmp;
                        }
                }
                if (list1.next == null)
                        list1.next = list2;
                return head;
        } // end merge
} // end class.
class ListNode{
    int data;
    ListNode next;
    public ListNode(int d){
        data = d;
    }
}






复制代码

uuuouou 发表于 2014-3-30 22:54:21 | 显示全部楼层
ListNode sortList(ListNode head, int len){
        if(len==1){
            head.next = null;
            return head;
        }
        if(len > 1){
            int mid = len/2;
            ListNode part1 = head;
            ListNode part2 = head;
            while(mid!=0){
                mid--;
                part2 = part2.next;
            }
            mid =len/2;
            ListNode list1 = sortList(part1, mid);     //分治之前,要先把链表断开吧?
            ListNode list2 = sortList(part2, len-mid);
            ListNode newlist = merge(list1, list2);
            return newlist;
        }
        return null;
    } // end method
回复 支持 反对

使用道具 举报

 楼主| dreamhit 发表于 2014-3-31 07:44:37 | 显示全部楼层

谢谢回复。
虽然没断开,但是实现了排序的功能啊。 我在本地机上测试,输出的sorted list是对的啊。不知道为什么submit 到leetcode后 总是提示runtime error。
回复 支持 反对

使用道具 举报

本版积分规则

请点这里访问我们的新网站:一亩三分地Instant.

Instant搜索更强大,不扣积分,内容组织的更好更整洁!目前仍在beta版本,努力完善中!反馈请点这里

关闭

一亩三分地推荐上一条 /5 下一条

手机版|小黑屋|一亩三分地论坛声明 ( 沪ICP备11015994号 )

custom counter

GMT+8, 2016-12-4 10:23

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

快速回复 返回顶部 返回列表