Offer 驾到,掘友接招!我正在参与2022春招打卡活动,点击查看活动详情。
一、题目描述:
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
示例 1:
输入:head = [1,1,2] 输出:[1,2] 示例 2:
输入:head = [1,1,2,3,3]
输出:[1,2,3]
提示:
链表中节点数目在范围 [0, 300] 内 -100 <= Node.val <= 100 题目数据保证链表已经按升序 排列
来源:力扣(LeetCode) 链接:leetcode-cn.com/problems/re… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
二、思路分析:
因为重复的元素在链表中出现的位置是连续的,因此我们可以做到只需要对链表进行一次遍历,就可以删除重复的元素。 具体实现过程: 创建头指针 cur 指向头部 head 循环结束条件: cur 和 cur.next 的有一个不存在,二者有一个不存在时说明链表没有去重复的必要, 当 cur.val 和 cur.next.val 相等时说明需要去重,则将 cur 的下一个指针指向下一个的下一个
- 如果不相等则 cur 移动到下一个位置继续循环
三、AC 代码:
class Solution {
public ListNode deleteDuplicates(ListNode head) {
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;
}
}
四、总结:
掘友们,解题不易,留下个赞或评论再走吧!谢啦~ 💐