Given a sorted linked list, delete all duplicates such that each element appear only once.

For example,

Given 1->1->2, return 1->2.

Given 1->1->2->3->3, return 1->2->3.

思路非常easy。因为乖乖的sort好了,就是推断下一个是不是比它大就好了,假设大,那么跳过下一个直接link到下一个的下一个。可是此时注意。考虑假设是1->1->1这样的情况。当你把第二个1删掉之后。指针一定要保留在第一个的位置,这样才干够接着推断这个1与再下一个1是不是相等(即第一个1和第3个1)。

唯一须要格外注意的情况就是最后两个,因为你要p.next=p.next.next来删除,所以对于最后两个不存在next的next。所以直接等于null就好啦

package testAndfun;

public class deleteDuplicates {
public static void main(String args[]){
deleteDuplicates dp = new deleteDuplicates();
ListNode head = new ListNode(3);
ListNode p1 = new ListNode(3);
head.next=p1;
ListNode p2 = new ListNode(3);
p1.next = p2;
ListNode p3 = new ListNode(3);
p2.next = p3;
ListNode p4 = new ListNode(13);
p3.next = p4;
prinf(head);
prinf(dp.deleteDup(head));
} private static void prinf(ListNode input){
while(input!=null) {
System.out.print(input.val+"->");
input = input.next;
}
System.out.println();
} public ListNode deleteDup(ListNode head){
if(head==null||head.next==null) return head;//if no head, what should I do?
ListNode p=head;
int i=0;
//System.out.println(p.val+" and "+p.next.val);
while(p.next != null){
if(p.val==p.next.val&&p.next.next!=null) {
//System.out.println("go first"+p.val);//"^^"+p.next.val+"%%"+p.next.next.val);
p.next=p.next.next;
continue;//if this and next equal, we should stay in this in case next.next is equal this
}
else if(p.val==p.next.val&&p.next.next==null) {
//System.out.println("go second"+p.val);
p.next=null;
continue;
}
//System.out.println(p.val+" round "+i++);
p=p.next;
if(p==null) break;
}
//System.out.print(head.val);
return head;
} }

版权声明:本文博主原创文章,博客,未经同意不得转载。

【Leetcode】Remove Duplicates from Sorted List in JAVA的更多相关文章

  1. 【leetcode】Remove Duplicates from Sorted Array II

    Remove Duplicates from Sorted Array II Follow up for "Remove Duplicates":What if duplicate ...

  2. 【leetcode】Remove Duplicates from Sorted Array I & II(middle)

    Given a sorted array, remove the duplicates in place such that each element appear only once and ret ...

  3. 【leetcode】Remove Duplicates from Sorted Array

    题目描述: Given a sorted array, remove the duplicates in place such that each element appear only once a ...

  4. 【leetcode】Remove Duplicates from Sorted List

    题目简述 Given a sorted linked list, delete all duplicates such that each element appear only once. For ...

  5. 【leetcode】 Remove Duplicates from Sorted List

    Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...

  6. 【leetcode】Remove Duplicates from Sorted List (easy)

    Given a sorted linked list, delete all duplicates such that each element appear only once. For examp ...

  7. 【leetcode】Remove Duplicates from Sorted List II (middle)

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

  8. 【Leetcode】Remove Duplicates from Sorted List II

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

  9. 【LeetCode】Remove Duplicates from Sorted List(删除排序链表中的重复元素)

    这道题是LeetCode里的第83道题. 题目描述: 给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次. 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: ...

随机推荐

  1. cocos2d-x v3.2环境配置(现在3.x版本号可以配置该)

     这里介绍的是Windows环境下的cocos2d-x配置. 前提: •Windows 7+ •cocos2d-x v3.2版本号(能够在http://www.cocos2d-x.org/down ...

  2. 64位操作系统下用Microsoft.Jet.OLEDB.4.0出现未注册错误

    在WIN7 64位下用Microsoft.Jet.OLEDB.4.0方法访问数据库Access,出现未注册错误 如果是要建立64位的应用程序 1.Microsoft Access Database E ...

  3. Effective Java (7) - 避免终止方法

    一. 基本概念 1. 所谓的终结方法事实上是指finalize(). 2. Java的垃圾回收机制仅仅负责内存相关清理.其它资源的清理(释放文件.释放DB连接)须要程序猿手动完毕. 3. 调用Syst ...

  4. 定义你自己ViewGroup

    尊重原创:http://blog.csdn.net/yuanzeyao/article/details/40264433 好久都没有写文章了,如今利用周末的时间对一些知识进行总结.便于加深理解,今天我 ...

  5. springmvc 接收对象 滴灌摘要

    js 对象 该阵列看起来像 我明白http://blog.csdn.net/baicp3/article/details/12752255本文 我们指示样品棒 data3一个js对象.遗嘱java当代 ...

  6. 【JAVA】【NIO】5、Java NIO Scatter / Gather

    标题手段Java NIO该分散体浓缩 Java NIO内置支持分散与收集.的概念主要用于信道分散聚集的读写. 读出的分散体的一个通道被读多个数据buffer在.因此.数据分散到多个buffer中. 对 ...

  7. UDP(socket)数据访问和封装情况C++代码

     配置QT下的pro文件 TEMPLATE = app CONFIG += console CONFIG -= app_bundle CONFIG -= qt   LIBS += -lWs2_32 ...

  8. 上传文件块client实现

    首先由内容阻止所有文件(块大小的约束),然后对于每一个chunk构造单独的一个UDP 数据报进行传输,在应用层的開始是自己定义的包头,有块号,块长度,块指纹等元数据信息,这些信息便于接收端可以按序正确 ...

  9. Redis集群方案及实现

    在作出Redis群集解决方案,他跑了小半个.行表现得非常稳定在几乎相同的经历与大家分享,我写在前面的文章数据在线服务的一些探索经验,能够做为背景阅读 应用 我们的Redis集群主要承担了下面服务:1. ...

  10. CSS不常见问题汇总

    写css有一段时间了,其间也遇到一些问题,跟大家分享一下 IE10+滚动条自动以藏问题,导致滚动部分页面看起来不正常 html, body {-ms-overflow-style: scrollbar ...