[LeetCode] Remove Duplicates from Sorted List II 链表

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.

 

Hide Tags
  Linked List
 

  控制好便可以了。
#include <iostream>

using namespace std;



/**

 * 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) {

        ListNode ret(0);

        ListNode * pslow=&ret,*pfast=head;

        while(1){

            if(pfast==NULL) break;

            bool dup = false;

            int curVal = pfast->val;

            pfast=pfast->next;

            while(pfast!=NULL&&pfast->val==curVal){

                dup = true;

                pfast=pfast->next;

            }

            if(dup==false){

                pslow->next = new ListNode(curVal);

                pslow=pslow->next;

            }

        }

        return ret.next;

    }

};



int main()

{

    return 0;

}

 

你可能感兴趣的:(LeetCode)