思路:完全是链表的操作,可惜还是写了很久,而且最后自己的结果竟然TLE了,无解,以后再来看吧,还是用换值先水过了……
先贴一个TLE的代码(不知道哪里的问题T_T):
class Solution {
public:
ListNode *insertionSortList(ListNode *&head) {
if(head){
ListNode *p,*q,*cur,*s;
p = head;
while(p->next){
cur = p->next;
p->next = NULL; //隔离当前元素
s = q = head;
while(q){
if(q->val <= cur->val){
s = q;
q = q->next;
}
else
break;
}
if(q == head) head = cur;
else
s->next = cur;
s = head;
while(s->next) s = s->next;
s->next = cur->next;
p = s;
cur->next = q;
}
}
return head;
}
};
换值方法:
class Solution {
public:
ListNode *insertionSortList(ListNode *&head) {
if(head){
ListNode *p,*q,*cur,*s;
p = head;
cur = p->next;
while(cur){
p = head;
while(p->val <= cur->val && p!=cur)
p = p->next;
if(p!=cur){
while(p!=cur){
swap(p->val,cur->val);
p = p->next;
}
}
cur = cur->next;
}
}
return head;
}
};