IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    LeetCode:Remove Duplicates from Sorted List II

    summer发表于 2016-06-02 10:28:47
    love 0

    Remove Duplicates from Sorted List II

    Total Accepted: 73972 Total
    Submissions: 272598
     Difficulty: Medium

    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

    For example,

    Given 1->2->3->3->4->4->5, return 1->2->5.

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

    Subscribe to see which companies asked this question

    Hide Tags

     Linked List

    c++ code:

    /**
    * Definition for singly-linked list.
    * struct ListNode {
    * int val;
    * ListNode *next;
    * ListNode(int x) : val(x), next(NULL) {}
    * };
    */
    class Solution {
    public:
    ListNode* deleteDuplicates(ListNode* head) {

    if(!head) return NULL;

    // 加一个哑值作为“伪”头结点,方便处理头部有重复结点情况
    ListNode dummy(0);
    dummy.next = head;
    ListNode *pre = &dummy;
    ListNode *cur = head;

    while(cur){

    while(cur->next && cur->val == cur->next->val) cur=cur->next;

    if(pre->next == cur) pre = pre->next; // 无重复结点
    else pre->next = cur->next; // 有重复结点

    cur = cur->next;
    }
    return dummy.next;
    }
    };



沪ICP备19023445号-2号
友情链接