博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
86. Partition List
阅读量:7222 次
发布时间:2019-06-29

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

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.

解法一:

直接插入法:

/** * 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 || !head->next) return head;        ListNode* dummy = new ListNode(-1);        dummy->next = head;        ListNode* pre = dummy;        ListNode* cur;        while(pre->next && pre->next->val < x){            pre = pre->next;        }        ListNode* head2 = pre;        pre = head2->next;             while(pre&&pre->next){            cur = pre->next;            if(cur->val < x){                pre->next = cur->next;  //先删除需要插入的节点                cur->next = head2->next;                head2->next =cur;                head2= head2->next;            }            else pre = pre->next;        }        return dummy->next;    }};

解法二:

把原链表拆分成两部分,再合起来即可

ListNode *partition(ListNode *head, int x) {    ListNode node1(0), node2(0);    ListNode *p1 = &node1, *p2 = &node2;    while (head) {        if (head->val < x)            p1 = p1->next = head;        else            p2 = p2->next = head;        head = head->next;    }    p2->next = NULL;    p1->next = node2.next;    return node1.next;}

转载于:https://www.cnblogs.com/CarryPotMan/p/5343685.html

你可能感兴趣的文章
gops —— Go 程序诊断分析工具
查看>>
PHP json_decode返回null解析失败原因
查看>>
SpringMVC与Struts2的对比
查看>>
Java_eclipse软件与git配合使用创建git仓库
查看>>
极路由饥饿营销引质疑 联合创始人拿数据正面回应
查看>>
配置visual studio code for Mac 调试c/c++
查看>>
9、android开发之java.lang.verifyError(转载)
查看>>
创造特殊的构造函数——寄生构造函数模式
查看>>
[笔记]使用clearfix清除浮动
查看>>
postgres常用命令
查看>>
Hive metastore三种配置方式
查看>>
识别浏览器方法
查看>>
ubuntu 14.04 如何安装nvidia显卡驱动 [转载]
查看>>
Javac的实现过程
查看>>
实力封装:Unity打包AssetBundle(番外篇)
查看>>
过河【路径压缩】
查看>>
51nod 1205 流水线调度
查看>>
二叉树前序、中序和后序遍历的非递归实现
查看>>
perl BEGIN block and END block
查看>>
Collection接口 map
查看>>