Description
给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
Intro
Ref Link:https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/
Difficulty:Medium
Tag:LinkedList
Updated Date:2023-08-02
Test Cases
示例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
题目数据保证链表已经按升序 排列
思路
- 链表遍历
Code AC
class Solution {/*** test case* 1 1 1 =====> null* 1 1 2 =====> 2*/public ListNode deleteDuplicates(ListNode head) {if (head == null) return head;ListNode preHead = new ListNode(-1);preHead.next = head;ListNode cur = preHead;while (cur.next != null) {ListNode pivot = cur.next; // might be deleted, need define pivot tmp node herewhile (pivot.next != null && pivot.val == pivot.next.val)pivot = pivot.next;if (cur.next == pivot) // if no same val nodes, means not run into while loop, then cur moves to next cur = cur.next;else // else cur.next need to be updated to pivot,nextcur.next = pivot.next;}return preHead.next;}
}
Accepted
166/166 cases passed (0 ms)
Your runtime beats 100 % of java submissions
Your memory usage beats 65.52 % of java submissions (41.5 MB)
复杂度分析
- 时间复杂度:O(n),其中 n 是链表的长度。
- 空间复杂度:O(1)。