这种链表的题起始最简单,业务逻辑就很简单,只是说让你处理一下指针。设计为难题有点不应该啊。
/**
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
class Solution {
public:
/**
*
* @param head ListNode类
* @param x int整型
* @return ListNode类
*/
ListNode* partition(ListNode* head, int x) {
// write code here
ListNode *left = new ListNode(0);
ListNode *right = new ListNode(0);
ListNode *leftCur = left;
ListNode *rightCur = right;
ListNode *p = head;
ListNode *pri = head;
while(p != NULL){
if(p->val < x){
leftCur->next = p;
leftCur = p;
}else{
rightCur->next = p;
rightCur = p;
}
pri = p;
p = p->next;
pri->next = NULL;
}
if(left->next != NULL){
leftCur->next = right->next;
return left->next;
}else{
return right->next;
}
}
};



京公网安备 11010502036488号