並べ替えチェーンテーブルの重複要素の削除
ソートチェーンテーブルを指定し、重複するすべての要素を削除して、各要素が一度だけ表示されるようにします.
例1:
例2:
問題解1:vectorのeraseメソッドを使用してunique()と協力してソート重複要素を削除する
問題解2:(他人の問題解を参考にする)
例1:
: 1->1->2
: 1->2
例2:
:[]
:[]
問題解1:vectorのeraseメソッドを使用してunique()と協力してソート重複要素を削除する
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) // vector erase , unique()
{
if (NULL == head)
return head;
vector v;
struct ListNode* p = head;
for (; NULL != p; p = p->next)
{
v.push_back(p->val);
}
v.erase(unique(v.begin(), v.end()), v.end());
struct ListNode* L = new struct ListNode(v.front());
v.erase(v.begin());
p = L;
struct ListNode* q;
while (!v.empty())
{
q = new struct ListNode(v.front());
p->next = q;
p = p->next;
v.erase(v.begin());
}
return L;
}
};
問題解2:(他人の問題解を参考にする)
ListNode* deleteDuplicates(ListNode* head)
{
while (nullptr == head)
return head;
struct ListNode* p = head;
struct ListNode* next;
while (nullptr != p)
{
next = p->next; // next
if (nullptr != next && p->val == next->val)
{
p->next = next->next;
delete next;
}
else
{
p = p->next;
}
}
return head;
}