题目描述(Easy)
Given a sorted linked list, delete all duplicates such that each element appear only once.
题目链接
https://leetcode.com/problems/remove-duplicates-from-sorted-list/description/
Example 1:
Input: 1->1->2
Output: 1->2
Example 2:
Input: 1->1->2->3->3
Output: 1->2->3
算法分析
无
提交代码:
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
if (!head) return nullptr;
ListNode* curr = head->next;
ListNode* prev = head;
while (curr)
{
if (prev->val == curr->val)
{
prev->next = curr->next;
delete curr;
curr = prev;
}
else
prev = curr;
curr = prev->next;
}
return head;
}
};
测试代码:
// ====================测试代码====================
void Test(const char* testName, ListNode* head, ListNode* expected)
{
if (testName != nullptr)
printf("%s begins: \n", testName);
Solution s;
ListNode* result = s.deleteDuplicates(head);
while (result && expected)
{
if (result->val != expected->val)
{
printf("failed\n");
return;
}
result = result->next;
expected = expected->next;
}
if(result || expected)
printf("failed\n");
else
printf("passed\n");
}
int main(int argc, char* argv[])
{
ListNode* node1 = new ListNode(1);
ListNode* node2 = new ListNode(1);
ListNode* node3 = new ListNode(2);
ConnectListNodes(node1, node2);
ConnectListNodes(node2, node3);
ListNode* node4 = new ListNode(1);
ListNode* node5 = new ListNode(2);
ConnectListNodes(node4, node5);
ListNode* node6 = new ListNode(1);
ListNode* node7 = new ListNode(1);
ListNode* node8 = new ListNode(2);
ListNode* node9 = new ListNode(3);
ListNode* node10 = new ListNode(3);
ConnectListNodes(node6, node7);
ConnectListNodes(node7, node8);
ConnectListNodes(node8, node9);
ConnectListNodes(node9, node10);
ListNode* node11 = new ListNode(1);
ListNode* node12 = new ListNode(2);
ListNode* node13 = new ListNode(3);
ConnectListNodes(node11, node12);
ConnectListNodes(node12, node13);
Test("Test1", node1, node4);
Test("Test2", node6, node11);
return 0;
}