Remove Duplicates from Sorted List
Given a sorted linked list, delete all duplicates such that each element appear onlyonce.
For example,
Given1->1->2, return1->2.
Given1->1->2->3->3, return1->2->3.
本题考点:
1 指针的熟练使用
2 判断重复元素
和Array的思想是一样的,不过对指针的操作增加了难度。
还是需要仔细画链表,一步一步地操作,那么这样的题目还是非常简单的。
class Solution {
public:
ListNode *deleteDuplicates(ListNode *head)
{
ListNode *cur = head;
while (cur && cur->next)
{
if (cur->val == cur->next->val) cur->next = cur->next->next;
else cur = cur->next;
}
return head;
}
};
或者下面程序,效率是一样的,减少了插入操作:
ListNode *deleteDuplicates(ListNode *head)
{
if (!head) return head;
ListNode *cur = head;
ListNode *post = head->next;
while (cur && post)
{
while (post && cur->val == post->val) post = post->next;
cur->next = post;
cur = cur->next;
if(post) post=post->next;
}
return head;
}
716

被折叠的 条评论
为什么被折叠?



