题目:
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 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; } }