83. 删除排序链表中的重复元素

题目描述

Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given 1->1->2, return1->2.
Given 1->1->2->3->3, return1->2->3.

/**
 * 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 == nullptr)
    		return nullptr;

    	ListNode *last = head;
    	ListNode * p = head->next;
    	while(p!=nullptr)
    	{
    		if(p->val!=last->val)
    		{
    			last = p;
    			p = p->next;
    		}
    		else
    		{
    			last->next = p->next;//这里保证始终是连着的,这是一种风格
    			ListNode *temp = p;
    			p = p->next;
    			temp->next = nullptr;
    			delete temp;

    		}
    	}

    	return head;    
    }
};

posted on 2021-07-24 08:35  朴素贝叶斯  阅读(25)  评论(0编辑  收藏  举报

导航