• leetcode之Remove Duplicates from Sorted List II


    Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

    For example,
    Given 1->2->3->3->4->4->5, return 1->2->5.
    Given 1->1->1->2->3, return 2->3.

    这道题比上一道题难度大很多,首先,好多情况都要考虑

    因为是要删除链表中的重复元素,所以要分好多种情况,如果整个链表的元素相同?如果头结点和第二个元素相同?如果最后两个元素相同?

    这道题自己没想起来,看剑指offer上面试题57才有了大致的思路,定义一个指向head的结点可以省好多事

    另外,定义了一个布尔变量,如果值相同,就代表应该删除,这里很巧妙的如果布尔值为true那么我继续指向下一个元素,否则两个指针都向前推进。

    下面附上代码:

    public ListNode deleteDuplicates(ListNode head) {
              if(head == null || head.next == null) return head;  
            ListNode newHead = new ListNode(-1);  
            newHead.next = head;  
            ListNode p1 = newHead;  
            ListNode p2 = head;  
            while(p2!=null){  
                boolean dup = false;  
                while(p2.next!=null && p2.val == p2.next.val){  
                    dup = true;  
                    p2 = p2.next;  
                }  
                if(dup){  
                    p2 = p2.next;  
                    continue;  
                }  
                p1.next = p2;  
                p1 = p1.next;  
                p2 = p2.next;  
            }  
            p1.next = p2;  
            return newHead.next;   
        }
    

      稍后再看看剑指offer上的源码。

  • 相关阅读:
    sql server 扩展存储过程
    SQL SERVER 数据导出JSON
    Jquery AJAX ASP.NET IIS 跨域 超简单解决办法
    切换 NPM 镜像源
    HTML 简介
    mongoose 安装及配置
    Windows下MongoDB的安装过程及基本配置
    Node.js中npm常用命令大全
    --nodejs详细安装步骤
    Go语言为何说它优雅?-- Golang中的几个常用初始化设计
  • 原文地址:https://www.cnblogs.com/gracyandjohn/p/4444305.html
Copyright © 2020-2023  润新知