您的位置:首页 > 其它

leetcode(83)—— 删除已排序链表重复元素(Remove Duplicates from Sorted List)

2016-04-20 13:39 766 查看
Remove Duplicates from Sorted List

官方答案(Java):

Remove Duplicates from Sorted List

思路:维护两指针(ListNode *p1, ListNode *p2,p2 始终指向 p1 的next),分别指向当前节点值和下一个节点,如果当前节点的值等于下一个节点的值,则…,如果不相等,则…。

class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (!head) return NULL;
ListNode *p1 = head, *p2 = head->next;
while (p1 && p2)
{
if (p1->val == p2->val)
{
p1->next = p2->next;
p2 = p1->next;
// p2 始终指向 p1 的 next
}

else
{
p1 = p2;
p2 = p1->next;
// p2 始终指向 p1 的 next
}
}
return head;
}
};


上述实现可能略显啰嗦:

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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: