思路:
1.首先将链表中的元素,遍历插入vector中,
2. 将vector升序处理;
3.一边从尾到头遍历vecctor,一边将遍历的元素插入链表;
疑问:已经升序完成了,为什么还要从尾到头插入链表,这里好像是因为链表创建节点是从后往前的。
上代码:
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类 the head node
* @return ListNode类
*/
ListNode* sortInList(ListNode* head)
{
// write code here
ListNode *newlist=NULL;
vector<int> res;
ListNode *list=head;
if(list==NULL||list->next==NULL) return NULL;
//将链表元素插入vector
while(list!=NULL)
{
res.push_back(list->val);
list=list->next;
}
//升序
sort(res.begin(),res.end());
//从后往前插入链表节点
for(int i=res.size()-1;i>=0;i--)
{
ListNode *list=new ListNode(res[i]);
list->next=newlist;
newlist=list;
}
return newlist;
}
};