题解 | #单链表的排序#

单链表的排序

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 算法题

全部评论

相关推荐

不愿透露姓名的神秘牛友
2024-12-30 18:02
程序员牛肉:1.可以标记一下自己的学校是985,有一些hr可能没想到你这个院校是985的。 2.简历所呈现出来的能力还是有点差的,苍穹外卖+黑马点评。这在java技术域里面也就是刚学三四个月的样子,大厂现在招人少,小厂又更加希望你能直接过来干活。就你简历上呈现出来的能力,确实是有点难找,肉眼可见的不懂技术。 第一个项目中:简单的使用redis也算是亮点嘛?使用jwt,threadlocal也算是亮点?你不就是调了几个包嘛?Nginx作为服务器也能写出来,这不是前端的活嘛? 第二个项目中:分布式锁+mq消息队列+Lua队列。真没啥好问的。属于面试官看一眼就阳痿的简历,没有任何想提问的欲望。 我给你建议是好好的挖一挖这个项目吧,其实苍穹外卖和黑马点评这两个项目很不错了,只不过是太烂大街了导致面试官没啥问的兴趣,所以不太推荐写简历上。
点赞 评论 收藏
分享
2024-12-29 19:48
河北科技大学 Java
没事就爱看简历:问题不在于简历:1、大学主修课程学那么多应用语言,作为计算机专业是很难理解的。 2、技能部分,每一个技能点的后半句话,说明对熟练,熟悉的标准有明显误会。 3、项目应该是校企合作的练习吧,这个项目你负责什么,取得了哪些成果都没有提及,只是列举了你认为有技术含量的点,而这些都有成熟的实现。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务