做网站去哪里好,福田蒙派克10座黄牌报价,成都品牌设计公司有哪些,wordpress文章能发链接吗题目传送门#xff1a;Leetcode82 给定一个已排序的链表的头 head #xff0c; 删除原始链表中所有重复数字的节点#xff0c;只留下不同的数字 。返回 已排序的链表 。 示例 1#xff1a; 输入#xff1a;head [1,2,3,3,4,4,5]
输出#xff1a;[1,2,5]示例 2#xff1… 题目传送门Leetcode82 给定一个已排序的链表的头 head 删除原始链表中所有重复数字的节点只留下不同的数字 。返回 已排序的链表 。 示例 1 输入head [1,2,3,3,4,4,5]
输出[1,2,5]示例 2 输入head [1,1,1,2,3]
输出[2,3]提示 链表中节点数目在范围 [0, 300] 内-100 Node.val 100题目数据保证链表已经按升序 排列 试题解析
已知链表有序且重复元素连续出现可以使用遍历链表的方法
dummy指向头结点cur同样指向头结点在后续操作中只需操作cur依次遍历cur的next和cur的next的next 如果出现重复元素记录下重复的值只要有重复值出现就改变cur的next
代码如下
class Solution {
public:ListNode* deleteDuplicates(ListNode* head) {if(head nullptr) return head;ListNode* dummy new ListNode(0);dummy-next head;ListNode* cur dummy;while(cur-next cur-next-next){if(cur-next-val cur-next-next-val){int x cur-next-val;while(cur-next cur-next-val x){cur-next cur-next-next;}}else{cur cur-next;}}return dummy-next;}
};