82. 删除排序链表中的重复元素 II
温馨提示:
本文最后更新于 2022年12月08日,已超过 932 天没有更新。若文章内的图片失效(无法正常加载),请留言反馈或直接联系我。
82. 删除排序链表中的重复元素 II
递归解法:
时间复杂度:O(n)
空间复杂度:O(n)
class Solution {
public ListNode deleteDuplicates(ListNode head) {
// - 递归解法
// - head 为空或者 head.next 为空边界判断
if (null == head || null == head.next) {
return head;
}
// - 初始化下一个接待您
ListNode next = head.next;
// - 情况1 :head 开始就重复了,找到了与head相连的所有重复元素,
if (head.val == next.val) {
// - 进一步判断还有没有重复元素
while (null != next && head.val == next.val) {
// - 如果有则删除节点向后移动
next = next.next;
}
// - 直到找到重复元素后面的第一个元素,继续递归判断重复元素后面的第一个元素
return deleteDuplicates(next);
} else {
// - 当前head 不重复,继续递归找下一个,判断后面的节点是否重复,最后不重复的节点都和head接上了
// - 如果后面有出现和非head 的重复节点都删掉,让只出现一次的节点接到head后面即可
head.next = deleteDuplicates(head.next);
}
return head;
}
}
正文到此结束
- 本文标签: Leet-Code 链表 递归
- 本文链接: http://www.ityoulove.com/article/23
- 版权声明: 本文由崔健宇原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权