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

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

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.

这道题我本想用交换节点的方法处理,因为势必要保存当前节点的前一个节点,所以交换起来非常复杂

后来上网一查,发现可以直接使用创建两个链表然后合并的方法,不禁恍然大悟,忽略了链表的灵活性

既然partition方法可以很容易的实现,那么链表的快速排序也可以实现了,有时间再实现

ListNode* partition(ListNode* head, int x) {    if (head == nullptr)        return head;    ListNode temp1(0);    ListNode temp2(0);    ListNode *cur1 = &temp1;    ListNode *cur2 = &temp2;    temp1.next = head;    int tag = 0;    while (head != nullptr)    {        if (head->val < x)        {                        if (tag == 1)             {                cur1->next = head;                tag = 0;            }            cur1 = cur1->next;        }        else if (head->val >= x)        {                    if (tag == 0)            {                cur2->next = head;                tag = 1;            }            cur2 = cur2->next;                }        head = head->next;    }    cur1->next = cur2->next = nullptr;    cur1->next = temp2.next;    return temp1.next;}

 

 

转载于:https://www.cnblogs.com/sdlwlxf/p/5073907.html

你可能感兴趣的文章
数据结构队列链表实现
查看>>
iOS CoreData 开发
查看>>
bzoj千题计划242:bzoj4034: [HAOI2015]树上操作
查看>>
自动化测试学习
查看>>
配置PL/SQL Developer连接Oracle数据库
查看>>
创建CancellationTokenSource对象用于取消Task
查看>>
vue入门实例
查看>>
管理者的角色修炼-第三课-赢在执行
查看>>
Git2
查看>>
禁止windows2003 关机选项
查看>>
Log4Net
查看>>
人生不相见,动如参与商
查看>>
禁止双击选择页面内容
查看>>
HDU5037 Frog
查看>>
程序集冲突问题
查看>>
LeetCode 766. Toeplitz Matrix
查看>>
Java序列化反序列化对象流ObjectInputStream、ObjectOutputStream
查看>>
Spring与Mybatis的整合
查看>>
WinForm 弹框确认后执行
查看>>
Linux面试题
查看>>