leetcode 83 删除排序链表中的重复元素
2020-12-13 14:08
标签:list ext 有一个 com move head pre || ati 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输入: 1->1->2->3->3 来源:力扣(LeetCode) leetcode 83 删除排序链表中的重复元素 标签:list ext 有一个 com move head pre || ati 原文地址:https://www.cnblogs.com/yfs123456/p/11552274.html
输出: 1->2
示例 2:
输出: 1->2->3
链接: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 }