当前位置: 首页 > news >正文

BM12 单链表的排序

目录

题目链接

题目

解题思路

代码


题目链接

单链表的排序_牛客题霸_牛客网

题目

解题思路

法一:值排序:遍历一遍链表将所有值放在一个集合中,然后排序,然后重新放入即可

法二:归并排序:先使用快慢指针将链表分为左右,然后一直递归到最小,最后归并,将小的连接在前面,最后返回即可

代码

法一:值排序

import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;*   public ListNode(int val) {*     this.val = val;*   }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 the head node* @return ListNode类*/public ListNode sortInList (ListNode head) {// write code hereListNode dummyNode=new ListNode(-1);ListNode cur=head;ArrayList<Integer> array=new ArrayList<>();while(cur!=null){ array.add(cur.val);cur=cur.next;}Collections.sort(array);dummyNode.next=head;cur=head;for(int i=0;i<array.size();i++){cur.val=array.get(i);cur=cur.next;}return dummyNode.next;}
}

法二:归并排序

import java.util.*;/** public class ListNode {*   int val;*   ListNode next = null;*   public ListNode(int val) {*     this.val = val;*   }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param head ListNode类 the head node* @return ListNode类*/public ListNode sortInList (ListNode head) {// write code hereif(head==null||head.next==null){return head;}ListNode slow,fast;slow=head;fast=head.next;while(fast!=null&&fast.next!=null){fast=fast.next.next;slow=slow.next;}ListNode newhead=slow.next;slow.next=null;ListNode left=sortInList(head);ListNode right=sortInList(newhead);ListNode dummyNode=new ListNode(-1);ListNode cur=dummyNode;while(left!=null&&right!=null){if(left.val<right.val){cur.next=left;left=left.next;}else{cur.next=right;right=right.next;}cur=cur.next;}cur.next=left==null?right:left;return dummyNode.next;}
}

http://www.dtcms.com/a/272729.html

相关文章:

  • 东土科技智能塔机系统亮相南京,助力智能建造高质量发展
  • HOOK专题
  • web前端面试笔记
  • 北京一家IPO业绩持续性存疑,关联交易频繁独立性堪忧
  • 24、企业设备清单管理(Equipment)详解:从分类到管理,设备全生命周期把控
  • etf期权到期的风险大不大怎么看?
  • MySQL中使用GROUP_CONCAT数据丢失问题的原因和处理方案
  • 深入理解区块链 | 去中心化架构与密码学保障
  • springboot数据脱敏(接口级别)
  • Uni-app 生命周期与钩子:程序的“生命”旅程
  • 企业电商平台搭建:ZKmall开源商城服务器部署与容灾方案
  • Spring--04--1--AOP自定义注解,记录用户操作日志
  • 第35周—————糖尿病预测模型优化探索
  • 网络资源模板--基于Android Studio 实现的健身系统App
  • 什么是缺陷?如何描述一个缺陷?
  • gitlab+TortoiseGit克隆生成ppk方式
  • 二分查找篇——寻找旋转排序数组中的最小值【LeetCode】
  • 数学建模-
  • leetcode 3439. 重新安排会议得到最多空余时间 I 中等
  • 征程 6M 部署 Omnidet 感知模型
  • Spark伪分布式集群搭建(Ubuntu系统)
  • 查看uniapp 项目中没有用到依赖
  • CanOpen转EtherCAT网关与台达伺服的配置指南配置软件篇
  • Rust Web 全栈开发(三):使用 Actix 构建简单的 Web Service
  • 【解决方案】基于 Amazon CloudFormation 打造三层 Web 应用架构实战
  • GitHub信息收集
  • 如何利用个人电脑搭建FTP文件服务器实现远程协作
  • 第二章-AIGC入门-AI视频生成:几款实用AI视频生成工具全解析(7/36)
  • 精准估算如何选?功能点与故事点估算法全解析
  • Navicat实现MySQL数据传输与同步完整指南