首页 > 其他 > 详细

Remove Duplicates from Sorted List

时间:2015-03-16 12:34:36      阅读:322      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!