
难度:Medium
解题思路:画图
value = 3
l_dummy->null 1 -> 4 -> 3 -> 2 -> 5 -> null
g_dummy->null
l_dummy--------> 1 -> 4 -> 3 -> 2 -> 5 -> null
g_dummy->null
l_dummy--------> 1 -> 4 -> 3 -> 2 -> 5 -> null
g_dummy---------------^
l_dummy--------> 1 -> 4 -> 3 -> 2 -> 5 -> null
g_dummy---------------^
-------->------
l_dummy--------> 1 4 -> 3 -> 2 -> 5 -> null
g_dummy---------------^
-------->------
l_dummy--------> 1 4 -> 3 2 -> 5 -> null
g_dummy---------------^ ----------^
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* partition(ListNode* head, int x) { ListNode *l_dummy = new ListNode(-1), *l_current = l_dummy; ListNode *g_dummy = new ListNode(-2), *g_current = g_dummy; ListNode *current = head; while(current != NULL) { // cout<<"current:"<<current->val<<endl; if(current->val < x) { l_current->next = current; l_current = l_current->next; } else { g_current->next = current; g_current = g_current->next; } current = current->next; } // cout<<"l_dummy->next"<<l_dummy->next->val<<endl; // cout<<"g_dummy->next"<<g_dummy->next->val<<endl; if(l_current == l_dummy && g_current == g_dummy) { return l_current->next; } else if(l_current == l_dummy) { return g_dummy->next; } else if(g_current == g_dummy) { return l_dummy->next; } else { l_current->next = g_dummy->next; g_current->next = NULL; return l_dummy->next; } } };
|
运行结果:6ms,超过18.98%
近期评论