Leetcode 86. Partition List
Posted randyniu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Leetcode 86. Partition List相关的知识,希望对你有一定的参考价值。
/** * 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) { // 如果为空 直接就返回 否则表明至少有一个节点 if(head==NULL) return NULL; //构建两个临时节点来进行辅助 ListNode lessHead(0); ListNode moreHead(0); ListNode *less = &lessHead; ListNode *more = &moreHead; //开始执行 直至结尾 while(head) { if(head->val >= x) { more->next = head; more = head; } else { less->next = head; less = head; } head = head->next; } // 如果lessHead.next不等于空,说明less至少有一个元素,这个时候应该将less->next 和 moreHead.next 连接起来 //这个时候moreHead.next可能为空也可能不为空 如果lessHead.next为空,表明moreHead.next一定不为空。 if(lessHead.next) { less->next = moreHead.next; } //如果more.next不为空,表明more至少有一个元素,这个时候应该将more->next置为NULL, if(moreHead.next) { more->next = NULL; } // 最后的返回 return lessHead.next ? lessHead.next : moreHead.next; } };
以上是关于Leetcode 86. Partition List的主要内容,如果未能解决你的问题,请参考以下文章