首页 > 其他 > 详细

【leetcode】 Remove Duplicates from Sorted List

时间:2016-01-19 23:22:21      阅读:170      评论:0      收藏:0      [点我收藏+]

Given a sorted linked list, delete all duplicates such that each element appear only once.

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

给出一个已排序链表,删除所有重复的元素使每一个节点值只出现一次

思路:

1. 定义pCurNode,pNextNode两个节点指针;

2. pCurNode初始化为链表头节点指针;pNextNode初始化为下一节点

3. 判断pCurNode是否有效;

4. 判断相邻两个节点是否相同,如相同删除后一个相同的节点(其实就是将pCurNode的next指针指向删除节点的下一节点即可),再循环比较原来删除节点后的节点值是否相同。如(1, 1)、(1,1, 1);

5. 如相邻两个节点不同,则将当前节点指针后移一个节点;

6. 重复3、4、5;

class Solution
{
public:
    ListNode* deleteDuplicates(ListNode* head) 
    {
        ListNode* pCurNode = head;
        ListNode* pNextNode = nullptr;
        while (pCurNode)
        {
            pNextNode = pCurNode->next;
            if (pNextNode&&pNextNode->val == pCurNode->val)
            {
                pCurNode->next = pNextNode->next;
            }
            else
            {
                pCurNode = pNextNode;
            }
        }

        return head;
    }

    void Print(ListNode* head)
    {
        ListNode* pCurNode = head;
        while (pCurNode)
        {
            printf(" %d", pCurNode->val);
            pCurNode = pCurNode->next;
        }

        printf("\n");
    }
};

 

【leetcode】 Remove Duplicates from Sorted List

原文:http://www.cnblogs.com/kernel0815/p/5143623.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!