【leetcode c++】83 Remove Duplicates from Sorted List

Remove Duplicates from Sorted List

Given a sorted linked list, delete allduplicates such that each element appear only once.

 

For example,

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

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

 

這題跟26RemoveDuplicates from Sorted Array題目一樣,只是輸入變成了鏈表的頭指針。

首先需要一個指針作爲返回,這題用鏈表的指針的話我們就不用維護新的指針了。一共2個指針。比數組輸入的簡單一些,也不能走交換思路了。

 

LeetcodeAcceptedSolutions Runtime Distribution


源碼:

#include <iostream>

using namespace std;

struct ListNode {
	int val;
	ListNode *next;
	ListNode(int x) : val(x), next(NULL) {}
};

ListNode* deleteRule(ListNode* head);
ListNode* deleteDuplicates(ListNode* head);

int main()
{
	ListNode l1(1);
	ListNode* pl1 = &l1;
	ListNode l2(2);
	ListNode* pl2 = &l2;
	ListNode l3(1);
	ListNode* pl3 = &l3;

	pl1->next = pl2;

	cout << deleteDuplicates(pl1)->val;

	return 0;
}

ListNode* deleteDuplicates(ListNode* head){
	//////////////////////////////////////////////////
	//leetcode 83 
	//Remove Duplicates from Sorted List
	//////////////////////////////////////////////////
	if (NULL == head) return NULL;

	ListNode* res = head;
	while (head->next)
	{
		if (head->val == head->next->val)
		{
			head->next = head->next->next;
		}
		else
		{
			head = head->next;
		}
	}
	return res;
	
	///////////////////////////////////////////////////
	//leetcode 82 
	//Remove Duplicates from Sorted List ii
	///////////////////////////////////////////////////
	//return deleteRule(head);
}

ListNode* deleteRule(ListNode* head){
	ListNode* res = head;
	return res;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章