[LeetCode]Insertion Sort List

来源:互联网 发布:南风捏脸数据 编辑:程序博客网 时间:2024/04/29 10:42
/** * 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) {        // IMPORTANT: Please reset any member data you declared, as        // the same Solution instance will be reused for each test case.        if(head == NULL) return head;        ListNode dummy(-1);        dummy.next = head;        ListNode* prev = head;        ListNode* cur = prev->next;        while(cur)        {            if(cur->val >= prev->val)//greater or equal            {                prev = cur;                cur = cur->next;            }            else//smaller            {                //first find the insert position                ListNode* insertPrev = &dummy;                ListNode* insertCur = dummy.next;                while(insertCur->val < cur->val)                {                    insertPrev = insertCur;                    insertCur = insertCur->next;                }                //then insert                prev->next = cur->next;                cur->next = insertCur;                insertPrev->next = cur;                cur = prev->next;            }        }        return dummy.next;    }};