给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2 输出: 1->2
示例 2:
输入: 1->1->2->3->3 输出: 1->2->3
思路:
这是一道简单难度的题。因为链表有序,所以用一个指针游标往后探测,发现值相同就删掉后一个节点即可。
AC代码:
/** * 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* cursor = head; while(cursor != nullptr && cursor->next != nullptr) { if(cursor->next->val == cursor->val) deleteNextNode(cursor); else cursor = cursor->next; } return head; } void deleteNextNode(ListNode* presentNode) { if(presentNode->next != nullptr) { ListNode* temp = presentNode->next; presentNode->next = temp->next; delete temp; } } };
Published by