一.题目描述
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回已排序的链表 。
示例 1:
输入:head = [1,1,2]
输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
二.思路分析
略;
三.代码实现
struct ListNode* deleteDuplicates(struct ListNode* head) {
if(head==NULL)
return head;
struct ListNode* p = head, *q = head->next;
while (q!= NULL)
{
if (p->val == q->val)
{
p->next = q->next;
free(q);
q=p->next;
}
else
{
p = p->next;
q = q->next;
}
}
return head;
}
四.收获
本题较为简单,但当真正开始写的时候,也会遇到一些问题,比如忘考虑空链表等,同时要注意边界问题,什么结束时刻的判断;
长时间不写代码,一些基础的语法就会生疏,所以代码还是要每天坚持写;