leetcode 83 删除排序链表中的重复元素

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 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 }

 

posted @ 2019-09-19 20:10  赤云封天  阅读(123)  评论(0编辑  收藏  举报