问题描述
给你链表的头结点 head
,请将其按 升序 排列并返回 排序后的链表 。
输入:head = [4,2,1,3]
输出:[1,2,3,4]
解题思路:数组
- 新建一个数组,保存链表中所有元素的值
- 对数组升序排序
- 重新构建链表
代码实现(js)
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var sortList = function(head) {
if(!head){
return null
}
// 1.将链表转成数组
let arr = []
while(head){
arr.push(head.val)
head = head.next
}
// 2.将数组排序
arr.sort((a, b) => {
return a - b
})
// 3.构造链表
let resHead = new ListNode(arr[0])
let pHead = resHead
for(let i = 1; i < arr.length; i++){
pHead.next = new ListNode(arr[i])
pHead = pHead.next
}
return resHead
};