码迷,mamicode.com
首页 > 其他好文 > 详细

Remove Duplicates from Sorted List

时间:2015-03-16 12:34:58      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:

删除一个有序单链表的重复节点

For example,
Given 1->1->2, return 1->2.
Given 1->1->2->3->3, return 1->2->3.

思路:两个指针,一前一后,前面指针的值与后面指针的值相等就往前,直到不同,后指针的下一个节点指向前指针,然后继续。
注意一下边界:

  • 头指针为空
  • 链表只有一个节点
  • 尾部需要处理

    1. class Solution {
    2. public:
    3. ListNode *deleteDuplicates(ListNode *head)
    4. {
    5. if (!head || !head->next)
    6. {
    7. return head;
    8. }
    9. ListNode* forward = head->next;
    10. ListNode* backward = head;
    11. while (forward-> next!= NULL)
    12. {
    13. if (forward->val == backward->val)
    14. {
    15. forward = forward->next;
    16. }
    17. else
    18. {
    19. backward->next = forward;
    20. backward = forward;
    21. forward = forward->next;
    22. }
    23. }
    24. if (backward->val == forward->val)
    25. {
    26. backward->next = NULL;
    27. }
    28. else
    29. {
    30. backward->next = forward;
    31. }
    32. return head;
    33. }
    34. };




Remove Duplicates from Sorted List

标签:

原文地址:http://www.cnblogs.com/flyjameschen/p/4341304.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!