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

删除链表中重复的结点

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

  1. 刚开始的dummynode一定不要声明成指针类型。
  2. cur用来链接链表。
  3. head用来做备份,并且操作的就是head
  4. head->next->val 之类的操作出来的时候,记得 head->next 不为空。
  5. 要注意一些head = head->next 是可同时处理很多事情的。
/*
struct ListNode {
    int val;
    struct ListNode *next;
    ListNode(int x) :
        val(x), next(NULL) {
    }
};
*/
class Solution {
public:

    map<int,ListNode*> mp;

    ListNode* deleteDuplication(ListNode* pHead) {
        ListNode node(0);
        ListNode* cur = &node;
        ListNode* head = pHead;

        while(head){
            if(head->next== NULL || head->val != head->next->val){//避免下一个节点相等,并且到最后一个节点的时候进来。
                cur->next = head;
                cur = cur->next;
            }

            while(head->next!=NULL && head-> val == head -> next-> val) head = head->next;
            head = head->next;//既可以指向下一个节点的同时,有可以接着处理上述的。

        }

        cur->next = NULL;


        return node.next;

    }
};
剑指Offer 文章被收录于专栏

剑指offer的解析结合

全部评论

相关推荐

06-20 19:40
中原工学院 Java
网络存储:十几天不会让你拉人办卡就结束了吧?
点赞 评论 收藏
分享
05-16 11:16
已编辑
东华理工大学 Java
牛客73769814...:盲猜几十人小公司,庙小妖风大,咋不叫她去4️⃣呢😁
牛客创作赏金赛
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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