1.题目描述
题目原链接:remove-duplicates-from-sorted-list
2.解题思路及算法
- 创建dump链表代替头节点,初始化时将dump->val赋值为不等于head->val的值(题目有指明链表的范围是[-100,100])
- 定义*cop,用作保存dump链表的头节点地址
- 比较dump->val与head->val,如果不相等则更改dump->next为head,同时dump后移
- 最后返回cop->next(因为cop指向的是初始定义的头节点的地址)
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public:
ListNode* deleteDuplicates(ListNode* head) {
ListNode* dump = new ListNode(101);
ListNode* cop = dump;
while(head){
if(head->val != dump->val){
dump->next = head;
dump = dump->next;
}
head = head->next;
}
dump->next = nullptr;
return cop->next;
}
};