zoukankan      html  css  js  c++  java
  • leetcode 82. 删除排序链表中的重复元素 II

    给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。

    示例 1:

    输入: 1->2->3->3->4->4->5
    输出: 1->2->5
    示例 2:

    输入: 1->1->1->2->3
    输出: 2->3

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

     1 public class _82 {
     2     public ListNode deleteDuplicates(ListNode head) {
     3         if (head == null || head.next == null) return head; // 有0个或1个节点
     4         if (head.next.next == null && head.val == head.next.val) return null; // 有2个值相同节点
     5         ListNode p = head, q = p.next;
     6         List<ListNode> noRepeat = new ArrayList<>();
     7         if (p.val != q.val) {
     8             noRepeat.add(p);
     9         }
    10         // 扫一遍将不重复的数字记录下来
    11         while (q != null){
    12             if (p.val != q.val && q.next != null && q.val != q.next.val)
    13                 noRepeat.add(q);
    14             if (q.next == null && p.val != q.val){
    15                 noRepeat.add(q);
    16             }
    17             p = p.next;
    18             q = p.next;
    19         }
    20         for (int i = 0; i < noRepeat.size()-1; i++){
    21             noRepeat.get(i).next = noRepeat.get(i+1);
    22         }
    23         if (noRepeat.size() <= 0)
    24             return null;
    25         noRepeat.get(noRepeat.size()-1).next = null;
    26         return noRepeat.get(0);
    27     }
    28 
    29     public static ListNode create(int[] elems){
    30         if (elems == null) return null;
    31         ListNode head = new ListNode(-1);
    32         ListNode p = head;
    33         for (int e : elems){
    34             ListNode listNode = new ListNode(e);
    35             listNode.next = null;
    36             p.next = listNode;
    37             p = p.next;
    38         }
    39         return head.next;
    40     }
    41 
    42     public static void main(String[] args) {
    43         int[] elems = {1,1,1,2,2,3,3,4,5,6,7};
    44         ListNode head = create(elems);
    45         ListNode listNode = new _82().deleteDuplicates(head);
    46         System.out.println();
    47         while (listNode != null) {
    48             System.out.print(listNode.val+", ");
    49             listNode = listNode.next;
    50         }
    51     }
    52 }
  • 相关阅读:
    JavaScript根据CSS的Media Queries来判断浏览设备的方法
    JavaScript API 设计原则
    高性能 CSS3 动画
    CSS代码实例:用CSS代码写出的各种形状图形
    frontpage 2010.2003绿色版
    Web前端年后跳槽必看的各种面试题
    [ksm][数学] Jzoj P5810 简单的玄学
    [分治] Jzoj P5807 简单的区间
    [dfs][bfs] Jzoj P5806 简单的操作
    [dp] Jzoj P5804 简单的序列
  • 原文地址:https://www.cnblogs.com/yfs123456/p/11545714.html
Copyright © 2011-2022 走看看