题目:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2 输出: 1->2
示例 2:
输入: 1->1->2->3->3 输出: 1->2->3
解题思路:
遍历整个链表,保存一个前序节点,方便寻找重复项。
时间复杂度为O(n)。
代码实现:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode res = head; if (res == null) return res; ListNode prev = head; head = head.next; while (head != null) { if (head.val == prev.val) { prev.next = head.next; } else { prev = head; } head = head.next; } return res; } }
本文介绍了一种从已排序链表中移除重复元素的方法,确保每个元素仅出现一次。通过一次遍历和使用前序节点来高效地识别并移除重复项,最终时间复杂度为O(n)。
418

被折叠的 条评论
为什么被折叠?



