删除排序链表中的重复元素
2017-03-29 11:04
246 查看
一、问题描述
给定一个排序链表,删除所有重复的元素每个元素只留下一个。
样例
给出
给出
二、解题思路
定义两个指针,一个指向head,一个指向head->next,当这两个指针所指的元素相等时,让l1->next等于l2->next,即把重复的元素删除掉了;否则,l1=l2;然后指针继续遍历,直到head->next=NULL。
三、我的代码
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: head node
*/
ListNode *deleteDuplicates(ListNode *head) {
if(head==NULL) return NULL;
if(head->next==NULL) return head;
ListNode *l1=head;
ListNode *l2=head->next;
while(l2!=NULL)
{
if(l1!=NULL&&l2->val==l1->val)
{
l1->next=l2->next;
l2=l2->next;
}
else
{
l1=l2;
l2=l2->next;
}
}
return head;
}
};
四、我的感想
删除操作和删除给定节点的题目类似,只不过这里要用到两个指针,判断哪些是重复的元素,以便删除,感觉在做题过程中思路越来越清晰了。
给定一个排序链表,删除所有重复的元素每个元素只留下一个。
样例
给出
1->1->2->null,返回
1->2->null
给出
1->1->2->3->3->null,返回
1->2->3->null
二、解题思路
定义两个指针,一个指向head,一个指向head->next,当这两个指针所指的元素相等时,让l1->next等于l2->next,即把重复的元素删除掉了;否则,l1=l2;然后指针继续遍历,直到head->next=NULL。
三、我的代码
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: head node
*/
ListNode *deleteDuplicates(ListNode *head) {
if(head==NULL) return NULL;
if(head->next==NULL) return head;
ListNode *l1=head;
ListNode *l2=head->next;
while(l2!=NULL)
{
if(l1!=NULL&&l2->val==l1->val)
{
l1->next=l2->next;
l2=l2->next;
}
else
{
l1=l2;
l2=l2->next;
}
}
return head;
}
};
四、我的感想
删除操作和删除给定节点的题目类似,只不过这里要用到两个指针,判断哪些是重复的元素,以便删除,感觉在做题过程中思路越来越清晰了。
相关文章推荐
- leetcode(83)—— 删除已排序链表重复元素(Remove Duplicates from Sorted List)
- LintCode-删除排序链表中的重复元素
- <LeetCode> 题112:删除排序链表中的重复元素
- 删除排序链表中的重复元素
- 删除排序链表中的重复元素
- LintCode-剑指Offer-(112)删除排序链表中的重复元素
- 排序链表中删除重复元素II
- Lintcode112.删除排序链表中的重复元素
- LintCode 删除排序链表中的重复元素
- 删除排序链表中的重复元素-LintCode
- 容易 删除排序链表中的重复元素
- 题目:删除排序链表中的重复元素
- lintcode ----删除排序链表中的重复元素
- 删除排序链表中的重复元素
- 删除排序链表中的重复元素
- LintCode_112_删除排序链表中重复的元素
- 删除排序链表中的重复元素
- 删除已排序单链表中重复的元素
- 作业2.112:删除排序链表中的重复元素
- 删除排序链表中的重复元素