作业8.96:链表划分
2017-03-30 13:10
260 查看
题目:链表划分
样例:
给定1->4->3->2->5->2->null,并且x=3。
返回1->2->2->4->3->5->null。
思路:设置两个新链表small和big,遍历原始链表,小于x的元素放在small里,大于x的元素放在big里,然后big连在small后面返回。
代码:
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 *small=new ListNode(0);
ListNode *big=new ListNode(0);
ListNode *p=small;
ListNode *q=big;
while(head!=NULL)
{
if(head->val<x)
{
p->next=head;
p=p->next;
}
else
{
q->next=head;
q=q->next;
}
head=head->next;
}
q->next=NULL;
p->next=big->next;
return small->next;
}
};
感想:一开始没有令q->next=NULL,运行总是显示内存不够,空间复杂度超标,调了好多地方才找到。
样例:
给定1->4->3->2->5->2->null,并且x=3。
返回1->2->2->4->3->5->null。
思路:设置两个新链表small和big,遍历原始链表,小于x的元素放在small里,大于x的元素放在big里,然后big连在small后面返回。
代码:
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 *small=new ListNode(0);
ListNode *big=new ListNode(0);
ListNode *p=small;
ListNode *q=big;
while(head!=NULL)
{
if(head->val<x)
{
p->next=head;
p=p->next;
}
else
{
q->next=head;
q=q->next;
}
head=head->next;
}
q->next=NULL;
p->next=big->next;
return small->next;
}
};
感想:一开始没有令q->next=NULL,运行总是显示内存不够,空间复杂度超标,调了好多地方才找到。
相关文章推荐
- 作业9.35:翻转链表
- 链表划分
- C++学习平时作业(1)--链表
- 链表的基本操作与文件操作--期末大作业代码部分
- [JS]链表划分给定中间值,小的在左边,大的在右边并保持原排序
- 一次作业题目-----话单计费(C-链表)
- Spark作业调度中stage的划分
- 【数据结构作业】写链表- -
- LeetCode(Partition List) 划分链表
- 链表划分
- LintCode : 链表划分
- Partition List 链表划分区间@LeetCode
- [LeetCode]89. Partition List链表划分
- Leetcode 86. Partition List(链表划分)
- 第七次作业整数划分NO.3
- 【数据结构作业 链表 + BFS + DFS】
- 链表划分
- 链表划分
- Lintcode 链表划分
- C++ 第二次课堂作业(反转链表)