[LintCode]96.链表划分
2017-08-30 14:57
381 查看
给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。
你应该保留两部分内链表节点原有的相对顺序。
样例
给定链表 1->4->3->2->5->2->null,并且 x=3
返回 1->2->2->4->3->5->null
思路:将所有小于等于给定值的节点取出组成一个新的链表a,将所有大于给定值的节点取出组成另一个新的链表b,只要将b链表直接接在a链表后即可
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/*
* @param head: The first node of linked list
* @param x: An integer
* @return: A ListNode
*/
ListNode * partition(ListNode * head, int x) {
ListNode* minList= new ListNode(0);
ListNode* maxList= new ListNode(0);
ListNode* min = minList, *max=maxList;
ListNode* current=head;
while(current){
if(current->val < x){
min->next = current;
min = min->next;
}
else{
max->next = current;
max = max->next;
}
current = current->next;
}
min->next= maxList->next;
max->next = NULL;
return minList->next;
}
};
你应该保留两部分内链表节点原有的相对顺序。
样例
给定链表 1->4->3->2->5->2->null,并且 x=3
返回 1->2->2->4->3->5->null
思路:将所有小于等于给定值的节点取出组成一个新的链表a,将所有大于给定值的节点取出组成另一个新的链表b,只要将b链表直接接在a链表后即可
/**
* Definition of ListNode
* class ListNode {
* public:
* int val;
* ListNode *next;
* ListNode(int val) {
* this->val = val;
* this->next = NULL;
* }
* }
*/
class Solution {
public:
/*
* @param head: The first node of linked list
* @param x: An integer
* @return: A ListNode
*/
ListNode * partition(ListNode * head, int x) {
ListNode* minList= new ListNode(0);
ListNode* maxList= new ListNode(0);
ListNode* min = minList, *max=maxList;
ListNode* current=head;
while(current){
if(current->val < x){
min->next = current;
min = min->next;
}
else{
max->next = current;
max = max->next;
}
current = current->next;
}
min->next= maxList->next;
max->next = NULL;
return minList->next;
}
};
相关文章推荐
- 96. 链表划分(partition-list)(c++)----lintcode面试题之链表
- python_lintcode_96. 链表划分_389. 判断数独是否合法
- 【LintCode 简单】96. 链表划分
- LintCode【简单】96. 链表划分。代码及思路
- LintCode 96. 链表划分
- lintCode. 96 链表划分
- LintCode 链表划分
- LintCode : 链表划分
- 链表划分-LintCode
- Lintcode 链表划分
- Lintcode 76.链表划分
- [LintCode 96] 链表划分(Python)
- lintcode 96 链表划分
- LintCode_096_链表划分
- LintCode_096_链表划分
- LintCode-链表划分
- Lintcode 删除链表中倒数第k个结点
- Lintcode 翻转链表
- lintcode-在O(1)时间复杂度删除链表节点-327
- [LintCode] 复制带随机指针的链表 Copy List with Random Pointer