要建设网站国外seo
给定一个已排序的链表的头 head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例 1:
输入:head = [1,1,2] 输出:[1,2]
示例 2:
输入:head = [1,1,2,3,3] 输出:[1,2,3]
提示:
- 链表中节点数目在范围
[0, 300]
内 -100 <= Node.val <= 100
- 题目数据保证链表已经按升序 排列
题解:
我们先定义一个cur指针指向head节点
要注意三个要点:①保证当前节点和当前节点的下一个节点不为空;
②当前节点的val和下一个节点的val值相等时,需要删除下一个节点,
即cur->next==cur->next->next;
③当前节点的val值和下一个节点的val值不相等时,需要遍历,继续往下进行,
即cur=cur->next;
/*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/
struct ListNode* deleteDuplicates(struct ListNode* head) {struct ListNode *cur=head;while(cur!=NULL&&cur->next!=NULL)//保证当前节点和下一个节点不为空{if(cur->val==cur->next->val){//删除重复节点cur->next=cur->next->next;}else{//移动到下一个节点cur=cur->next;}}return head;}