lintcode——链表划分
来源:互联网 发布:如何访问google 知乎 编辑:程序博客网 时间:2024/05/16 00:37
1.题目
给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。
你应该保留两部分内链表节点原有的相对顺序。
给定链表 1->4->3->2->5->2->null,并且 x=3
返回 1->2->2->4->3->5->null
2.思路思路
新建两个链表,对两个新链表尾插。在旧链表里从头开始遍历,当遍历到小于x的值时插入到其中一个链表,当遍历到大于x的值时插入到另一个链表中,遍历到NULL时结束;最后把两个链表接起来,返回放在前面的链表头指针即可。
3.代码
/**
* 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) {
// write your code here
if(head==NULL)
{ return NULL;}
ListNode *leftDummy=new ListNode(0);
ListNode *rightDummy=new ListNode(0);
ListNode *left=leftDummy;
ListNode *right=rightDummy;
while(head!=NULL)
{
if(head->val<x)
{ left->next=head;
left=head;
}
else
{
right->next=head;
right=head;
}
head=head->next;
}
right->next=NULL;
left->next=rightDummy->next;
return leftDummy->next;
}
};
4.感想
对于我来说,对链表进行操作时要注意不能丢了链表的头!这是我做开始几道题时比较迷糊的地方。这个题的想法是听了课后知道的,如果要是自己想的话还是很让人大开脑洞的。现在发现很多时候都是新建链表进行后续操作的~~~! :)
- lintcode——链表划分
- LintCode-链表划分
- LintCode:链表划分
- Lintcode 链表划分
- LintCode 链表划分
- 链表划分-LintCode
- LintCode : 链表划分
- 链表划分-LintCode
- lintcode&九章算法——Lintcode No.96. 链表划分 ? 待解决
- LintCode 96. 链表划分
- lintcode 96 链表划分
- [LintCode]96.链表划分
- 数组划分——LintCode
- LINTCODE————最小划分
- LintCode Partition List 链表划分
- [LintCode 96] 链表划分(Python)
- LintCode-数组划分
- LintCode 数组划分
- 重头开发之路——HTML(一)
- 删除链表中的元素
- Hibernate基础------》关系映射---》继承映射-》所有类映射到一张表中(类融合映射或者鉴别器映射)
- 如何解决MyEclipse编辑一次卡10秒(未响应)的问题
- intellij idea 删除最近项目
- lintcode——链表划分
- nyistOJ-See LCS again(二分)
- php传值的方式和ajax的验证
- 欢迎使用CSDN-markdown编辑器
- spring自定义标签实现
- 过采样为什么能提高信噪比
- tcpdump实战-----------抓取vlan中的arp报文
- platform总线相关_2
- SSH端口转发情景模拟