【LeetCode147】对链表进行插入排序
【摘要】
文章目录
一、对链表进行插入排序二、思路三、C++代码
一、对链表进行插入排序
栗子:
Input: head = [-1,5,3,4,0]
Output: [-1,0,3,4,5]...
一、对链表进行插入排序
栗子:
Input: head = [-1,5,3,4,0]
Output: [-1,0,3,4,5]
- 1
- 2
限制:
- The number of nodes in the list is in the range [1, 5000].
- -5000 <= Node.val <= 5000
二、思路
如果要遍历然后通过遍历每个链表节点,指针一个个改指向,比较麻烦,需要三个指针,节点数看起来不是很多,偷懒直接用STL进行排序然后再连在一起。前者方法后面补~
三、C++代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* insertionSortList(ListNode* head) {
vector<ListNode*>vec;
while(head){
vec.push_back(head);
head = head->next;
}
sort(vec.begin(), vec.end(), [&](ListNode* n1, ListNode* n2){
return n1->val < n2->val;
});
for(int i = 0;i < vec.size(); i++){
if(i == vec.size()-1){
vec[i]->next = NULL;
}else{
vec[i]->next = vec[i+1];
}
}
return vec.front();
}
};
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
文章来源: andyguo.blog.csdn.net,作者:山顶夕景,版权归原作者所有,如需转载,请联系作者。
原文链接:andyguo.blog.csdn.net/article/details/122421961
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)