题解 | #删除链表中重复的结点#

删除链表中重复的结点

http://www.nowcoder.com/practice/fc533c45b73a41b0b44ccba763f866ef

重复节点删除

方法一:哈希表记录遍历一次,再遍历一次删除重复元素

/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:
    ListNode* deleteDuplication(ListNode* pHead) {
        unordered_map<int,int> m;
        ListNode* head = new ListNode(-1);
        head->next = pHead;
        while(pHead){
           ++m[pHead->val];
            pHead = pHead->next;
        }
        pHead = head;
        while(pHead->next){
            if(m[pHead->next->val]>1){
                ListNode* tmp = pHead->next;
                pHead->next = pHead->next->next;
                delete tmp;
            }else{
            pHead = pHead->next;
            }
        }
        return head->next;
    }
};
全部评论

相关推荐

鬼迹人途:你去投一投尚游游戏,服务器一面,第一个图算法,做完了给你一个策略题,你给出方案他就提出低概率问题,答不上当场给你挂
点赞 评论 收藏
分享
04-25 19:29
已编辑
宁波大学 运营
被普调的六边形战士很高大:你我美牛孩
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务