147. Insertion Sort List

来源:互联网 发布:淘宝联盟手机怎么登陆 编辑:程序博客网 时间:2024/04/23 17:36

方法1:

从后往前比较

/** * Definition for singly-linked list. * struct ListNode { *     int val; *     ListNode *next; *     ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:    ListNode* insertionSortList(ListNode* head) {        if(head==NULL||head->next==NULL)            return head;        ListNode* Head=new ListNode(-1);        ListNode* pre=Head;        ListNode* cur=head->next;        ListNode* nx=NULL;                head->next=pre;        pre=head;                while(cur)        {            nx=cur->next;            if(pre->val<=cur->val)            {                cur->next=pre;                pre=cur;            }            else            {                ListNode* p=pre;                while(pre->next!=Head&&pre->next->val>cur->val)                {                    pre=pre->next;                }                cur->next=pre->next;                pre->next=cur;                pre=p;            }                        cur=nx;        }                cur=pre->next;        pre->next=NULL;                while(cur)        {            nx=cur->next;            cur->next=pre;                        pre=cur;            cur=nx;        }        return Head->next;    }};

方法2:

从前往后比较

class Solution {public:    ListNode* insertionSortList(ListNode* head) {        if(head==NULL||head->next==NULL)            return head;                    ListNode* Head=new ListNode(-1);        ListNode* cur=head;        while(cur)        {            ListNode* nx=cur->next;            ListNode* pre=Head;            while(pre->next&&pre->next->val<cur->val)            {                pre=pre->next;            }            cur->next=pre->next;            pre->next=cur;            cur=nx;        }        return Head->next;    }};


0 0
原创粉丝点击