「这是我参与11月更文挑战的第4天,活动详情查看:2021最后一次更文挑战」。
前言
今年最后一波月更活动,不拿个参与奖,那多可惜,所以准备了个较为简单的算法七天乐。刚好自己在算法上也是有待加强。
题目描述
题目链接:链表排序
题目描述我用截图leetcode的为主,所以题目如下图
思路分析
题目解析:给一个无序链表进行排序,我简单分析一下拿到题目我自己本人的第一思路,简单判断一下边界,比如链表为null,或者只有一个 直接返回,原来本身,不需要进行排序。
可以写个简单的方法实现一个:把一个指针指向的点插入一个有序的链表中。如果有这样的方法,这题目就变成遍历整个链表,然后依次用该方法把值插入一个记录新的链表里,直到遍历结束,返回这个新的有序链表。按这个思路进行了几次解法,发现函数实现还是有点问题;
看了一下解法提示:新get到一个解法,换成数组然后进行数组排序,再重新生成新的链表。 注意点,sort返回的是重排后的新数组本身,如果sort里面不加回调就按默认排序(按ASCII值去排序 会出现2在11之后),
var sortList = function(head) {
if(!head||!head.next){
return head
}
let list = new ListNode(0, head)
let result = list
let arr= []
while(head){
arr.push(head.val);
head = head.next
}
arr.sort((a,b)=>{
return a-b
});
for (let i = 0; i < arr.length; i++) {
result.next.val = arr[i]
result = result.next
}
return list.next
};
复制代码
总结
链表算是比较常见的算法题,
坚持就是胜利。11月第4题算法完成,坚持就是胜利!!!
扫描二维码关注公众号,回复:
13306849 查看本文章
如果你还有想补充或者说明的欢迎留言评论。
熟能生巧(Practice make perfect!)。
↓↓↓
→ 算法系列链接 ←
↑↑↑
这里可以点!这里可以点!这里可以点!