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

经典算法:排序链表

题目:148. 排序链表

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

示例 1:

输入:head = [4,2,1,3]
输出:[1,2,3,4]

示例 2:

输入:head = [-1,5,3,4,0]
输出:[-1,0,3,4,5]

示例 3:

输入:head = []
输出:[]

提示:

  • 链表中节点的数目在范围 [0, $ 5 * 10^4 $] 内
  • $ -10^5 $ <= Node.val <= $ 10^5 $

进阶: 你可以在 $ O(n log n) $ 时间复杂度和常数级空间复杂度下,对链表进行排序吗?

解题思路

见代码。

实现代码

package leetcodeimport ("sort""github.com/superproj/go-leetcode/structure"
)// ListNode define
type ListNode = structure.ListNode/*** Definition for singly-linked list.* type ListNode struct {*     Val int*     Next *ListNode* }*/
func sortList(head *ListNode) *ListNode {// 将链表转换成slicenums := make([]int, 0)tmp := headfor tmp != nil {nums = append(nums, tmp.Val)tmp = tmp.Next}// 将slice排序sort.Ints(nums)// 将slice转换成链表dummyHead := new(ListNode)node := dummyHeadfor i := 0; i < len(nums); i++ {tmpNode := &ListNode{nums[i], nil}node.Next = tmpNodenode = tmpNode}return dummyHead.Next
}

单元测试

package leetcodeimport ("testing""github.com/stretchr/testify/assert""github.com/superproj/go-leetcode/structure"
)func Test_sortList(t *testing.T) {assert := assert.New(t)type args struct {first []int}tests := []struct {args argswant []int}{{args: args{[]int{1, 2, 3, 4, 5}},want: []int{1, 2, 3, 4, 5},},{args: args{[]int{1, 1, 2, 5, 5, 4, 10, 0}},want: []int{0, 1, 1, 2, 4, 5, 5, 10},},{args: args{[]int{1}},want: []int{1},},{args: args{[]int{}},want: []int{},},}for _, tt := range tests {first := structure.Ints2List(tt.args.first)actual := structure.List2Ints(sortList(first))assert.Equal(tt.want, actual)}
}

例行海报:10+ 高质量体系课、15+ 实战项目助你提高技术天花板,入大厂、拿高薪

相关文章:

  • 【第九篇】 SpringBoot测试补充篇
  • leetcode238-除自身以外数组的乘积
  • 权限一览表
  • AUTOSAR实战教程--标准协议栈实现DoIP转DoCAN的方法
  • 第三讲 Linux进程概念
  • java_dependencies_父子模块引入依赖关系
  • CompletableFuture+线程池使用案列
  • @Import原理与实战
  • 自定义protoc-gen-go生成Go结构体,统一字段命名与JSON标签风格
  • Go语言系统监控实战:gopsutil库全面解析与应用
  • 75Qt窗口_Qt窗口概览
  • Redis集群模式之主从复制模式(2)
  • 轻量级的Windows系统优化与个性化解决方案
  • 汽车车载软件平台化项目规模颗粒度选择的一些探讨
  • JS Day05
  • 幂等性的七大解决方案
  • 如何利用 audit2allow 工具调试SELinux日志
  • Spring类型转换器相关接口和实现原理
  • LLMs 系列科普文(8)
  • 免费批量PDF转Word工具
  • 网站用的横幅广告怎么做/内部优化
  • 阿里巴巴国际站靠谱吗/百度快速查询
  • 国外主流网站开发技术/2022年最新十条新闻
  • 图片制作动图/百度seo快速排名优化
  • 安徽工程建设信息网站/软文云
  • 做网站的财务需求/seo推广系统排名榜