题解 | #单链表的排序#

单链表的排序

http://www.nowcoder.com/practice/f23604257af94d939848729b1a5cda08

描述

给定一个无序单链表,实现单链表的排序(按升序排序)。

示例1

输入:
[1,3,2,4,5]

返回值:
{1,2,3,4,5}

思路

链表本身没法去排序,咱们可以借助其他的数据结构来实现排序,比如 Java 中的链表,拍好序之后在重新生成链表。

AC代码

public ListNode sortInList (ListNode head) {
        // write code here
        if (head == null) {
            return head;
        }
        // 创建集合,用来存储链表中的值
        List<Integer> list = new ArrayList<>();
        // 填充链表
        while (head != null) {
            list.add(head.val);
            head = head.next;
        }
        // 排序
        list.sort((a,b)->{return a-b;});
        ListNode dummy = new ListNode(0);
        ListNode node = dummy;
        // 生成新的链表
        for (int i = 0; i < list.size(); i ++) {
            node.next = new ListNode(list.get(i));
            node = node.next;
        }
        return dummy.next;
    }
  • 时间复杂度:O(N),链表长度
  • 空间复杂度:O(N),链表长度

最后

大家可以去 【牛客网-题库-在线编程】去练习一下。
可以去微信搜索:【蘑菇睡不着】交个朋友~
也可以扫描下方二维码。

图片说明

AC_算法题 文章被收录于专栏

AC 算法题

全部评论

相关推荐

不愿透露姓名的神秘牛友
09-30 19:49
起名星人:蛮离谱的,直接要求转投销售
投递汇川技术等公司10个岗位
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务