博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] Partition List
阅读量:6794 次
发布时间:2019-06-26

本文共 1842 字,大约阅读时间需要 6 分钟。

Given a linked list and a value x, partition it such that all nodes less than x come before nodes greater than or equal to x.

You should preserve the original relative order of the nodes in each of the two partitions.

For example,

Given 1->4->3->2->5->2 and x = 3,
return 1->2->2->4->3->5.

类似于qsort的partition的思想,用两根指针记录左右两边。

1 /** 2  * Definition for singly-linked list. 3  * struct ListNode { 4  *     int val; 5  *     ListNode *next; 6  *     ListNode(int x) : val(x), next(NULL) {} 7  * }; 8  */ 9 class Solution {10 public:11     ListNode *partition(ListNode *head, int x) {12         // Start typing your C/C++ solution below13         // DO NOT write int main() function14         if (head == NULL)15             return NULL;16             17         ListNode *pPre = NULL;18         ListNode *p = head;19         ListNode *q = head;20         21         while(q->next)22             q = q->next;23             24         ListNode *tail = q;25         26         while(p != q)27         {28             if (p->val >= x)29             {30                 ListNode *pNext = p->next;31                 if (head == p)32                     head = pNext;33                 tail->next = p;34                 p->next = NULL;35                 tail = p;36                 if (pPre)37                     pPre->next = pNext;38                 p = pNext;39             }40             else41             {42                 pPre = p;43                 p = p->next;44             }45         }46         47         if (p->val >= x && q != tail)48         {49             ListNode *pNext = p->next;50             if (head == p)51                 head = pNext;52             tail->next = p;53             p->next = NULL;54             if (pPre)55                 pPre->next = pNext;56         }57         58         return head;       59     }60 };

转载地址:http://obrgo.baihongyu.com/

你可能感兴趣的文章
MongoDB详解(二)
查看>>
日志分析程序webalizer添加中文支持
查看>>
oracle 发邮件 存储过程
查看>>
银行支付接口Webservice之四
查看>>
threadLocal源码及其原理分析
查看>>
正则表达式
查看>>
转场动画
查看>>
企业号OAuth2.0验证企业用户接口
查看>>
我的友情链接
查看>>
lduan Exchange 2013 策略功能(十二)
查看>>
centos6 连接数修改
查看>>
java.security.InvalidKeyException: Illegal key size or default parameters
查看>>
Oracle10gR2 on SuSE9 x86_86安装技术文档(原版英文)
查看>>
LAMP编译安装(续)
查看>>
翻译 - NodeJS错误处理最佳实践
查看>>
Linux下卸载mysql
查看>>
sudo 详解、用户以及组的创建删除。
查看>>
微信小程序组件化开发框架-Labrador (二)
查看>>
Linux自动化运维之Cobbler(自定义重装)NO.2
查看>>
Apache中 RewriteCond 规则参数介绍
查看>>