给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1 public class _83 { 2 public ListNode deleteDuplicates(ListNode head) { 3 if (head == null || head.next == null) return head; // 空链表或者只有一个节点的链表 4 if (head.next.next == null && head.val == head.next.val) return head.next; // 链表只有有两个相同的节点 5 6 ListNode p = head; 7 ListNode q = p.next; 8 while (true){ 9 while (q != null && p.val == q.val) 10 q = q.next; 11 if (p.next != q){ 12 p.next = q; 13 p = q; 14 } else { 15 p = p.next; 16 } 17 if (q == null) 18 break; 19 q = p.next; 20 } 21 return head; 22 } 23 24 public static void main(String[] args) { 25 int[] elems = {1,1}; 26 ListNode head = _82.create(elems); 27 ListNode p = new _83().deleteDuplicates(head); 28 29 while (p != null){ 30 System.out.print(p.val+", "); 31 p = p.next; 32 } 33 } 34 }