f**********3 发帖数: 295 | 1 居然破天荒一次通过了... 但是觉得if else用得太多?不够clean,请问可以怎样改进?
public class Solution {
public ListNode insertionSortList(ListNode head) {
if (head == null || head.next ==null) return head;
ListNode p1=head, p2=head.next;
ListNode p3=head, p4=head.next;
while(p2!=null) {
if (p1.val<=p2.val) {
p1 = p1.next;
p2 = p2.next;
} else {
p1.next = p2.next;
if (p2.val
p2.next = head;
head = p2;
} else {
p3=head;
p4=head.next;
while ( !(p3.val<=p2.val && p2.val<=p4.val) ) {
p3 = p3.next;
p4 = p4.next;
}
p3.next = p2;
p2.next = p4;
}
p2 = p1.next;
}
}
return head;
}
} |
b*********s 发帖数: 115 | 2 非大牛
我是在最开始加一个dummy head
public class Solution {
public ListNode insertionSortList(ListNode head) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
ListNode dummy = new ListNode(Integer.MIN_VALUE);
dummy.next = head;
ListNode preNode = dummy;
ListNode curNode = dummy.next;
while (curNode != null) {
ListNode pre = dummy;
ListNode cur = dummy.next;
while (cur.val < curNode.val) {
pre = cur;
cur = cur.next;
}
if (cur != curNode) {
pre.next = curNode;
preNode.next = curNode.next;
curNode.next = cur;
curNode = preNode;
}
preNode = curNode;
curNode = curNode.next;
}
return dummy.next;
}
} |
p*********5 发帖数: 8 | |
g*********e 发帖数: 14401 | 4 用了一个dummy node, 记得用完删掉
class Solution {
public:
ListNode *insertionSortList(ListNode *head) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
if(head == NULL)
return NULL;
ListNode *dummy=new ListNode(0);
dummy->next=head;
head=head->next;
dummy->next->next=NULL;
while(head) {
ListNode *cur=head;
head=head->next;
ListNode *t=dummy;
while(t->next && t->next->val < cur->val) {
t=t->next;
}
cur->next=t->next;
t->next=cur;
}
ListNode *res=dummy->next;
delete dummy;
return res;
}
}; |
s*********9 发帖数: 53 | 5 public class Solution {
public ListNode insertionSortList(ListNode head) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
ListNode dummy = new ListNode(0);
while(head!=null){
ListNode tmp = head;
ListNode pre = dummy;
while(pre.next!=null && pre.next.val < tmp.val){
pre = pre.next;
}
head = head.next;
tmp.next = pre.next;
pre.next = tmp;
}
return dummy.next;
}
} |
A*********c 发帖数: 430 | 6 code很简洁,学习了
【在 g*********e 的大作中提到】 : 用了一个dummy node, 记得用完删掉 : class Solution { : public: : ListNode *insertionSortList(ListNode *head) { : // IMPORTANT: Please reset any member data you declared, as : // the same Solution instance will be reused for each test case. : if(head == NULL) : return NULL; : ListNode *dummy=new ListNode(0); : dummy->next=head;
|