148. 排序链表 --力扣 --JAVA

简介: 给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表 。

 题目

给你链表的头结点 head ,请将其按 升序 排列并返回 排序后的链表

解题思路

    1. 先将链表各节点之间的联系断开然后再进行排序;
    2. 通过List存放节点,对List按照节点的值进行排序;
    3. 遍历List重新建立联系。

    代码展示

    class Solution {
        public ListNode sortList(ListNode head) {
            if(head == null){
                return null;
            }
            List<ListNode> list = new ArrayList<>();
            while (head != null){
                //创建临时节点存放下一个节点
                ListNode node = head.next;
                //将当前节点与下一个节点断开连接,再存放到List中,避免产生循环
                head.next = null;
                list.add(head);
                head = node;
            }
            //对list进行升序排序
            list.sort(new Comparator<ListNode>() {
                @Override
                public int compare(ListNode o1, ListNode o2) {
                    return o1.val - o2.val;
                }
            });
            for (int i = 1; i < list.size(); i++){
                list.get(i - 1).next = list.get(i);
            }
            return list.get(0);
        }
    }

    image.gif


    目录
    相关文章
    【力扣】-- 移除链表元素
    【力扣】-- 移除链表元素
    171 1
    |
    6月前
    |
    监控 Java API
    Java语言按文件创建日期排序及获取最新文件的技术
    这段代码实现了文件创建时间的读取、文件列表的获取与排序以及获取最新文件的需求。它具备良好的效率和可读性,对于绝大多数处理文件属性相关的需求来说足够健壮。在实际应用中,根据具体情况,可能还需要进一步处理如访问权限不足、文件系统不支持某些属性等边界情况。
    312 14
    |
    Java 程序员
    Java 排序神器:Comparable 和 Comparator 该怎么选?
    嗨,大家好,我是小米!今天和大家聊一聊Java社招面试中常考的经典问题——Comparable和Comparator的区别。Comparable定义对象的自然排序,适用于单一固定的排序规则;Comparator则是策略接口,用于定义自定义排序规则,适用于多样化或多变的排序需求。掌握这两者的区别是理解Java排序机制的基础,也是面试中的加分题。结合实际项目场景深入探讨它们的应用,能更好地打动面试官。如果你觉得有帮助,欢迎点赞、收藏、分享,期待你的一键三连!我们下期见~ 我是小米,一个喜欢分享技术的程序员,关注我的微信公众号“软件求生”,获取更多技术干货!
    179 20
    java数据结构,双向链表的实现
    文章介绍了双向链表的实现,包括数据结构定义、插入和删除操作的代码实现,以及双向链表的其他操作方法,并提供了完整的Java代码实现。
    java数据结构,双向链表的实现
    |
    存储 安全 Java
    【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
    【用Java学习数据结构系列】探索顺序表和链表的无尽秘密(附带练习唔)pro
    105 3
    【链表】算法题(二) ----- 力扣/牛客
    【链表】算法题(二) ----- 力扣/牛客
    |
    存储 搜索推荐 算法
    【用Java学习数据结构系列】七大排序要悄咪咪的学(直接插入,希尔,归并,选择,堆排,冒泡,快排)以及计数排序(非比较排序)
    【用Java学习数据结构系列】七大排序要悄咪咪的学(直接插入,希尔,归并,选择,堆排,冒泡,快排)以及计数排序(非比较排序)
    178 1
    (剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
    (剑指offer)18、删除链表的节点—22、链表中倒数第K个节点—25、合并两个排序的链表—52、两个链表的第一个公共节点(2021.12.07)
    185 0
    |
    算法
    ❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
    ❤️算法笔记❤️-(每日一刷-83、删除排序链表中的重复项)
    194 0

    热门文章

    最新文章