【Leetcode】Remove Duplicates from Sorted List in JAVA
2015-09-12 14:31
507 查看
Given a sorted linked list, delete all duplicates such that each element appear only once.
For example,
Given
Given
思路非常easy。因为乖乖的sort好了,就是推断下一个是不是比它大就好了,假设大,那么跳过下一个直接link到下一个的下一个。可是此时注意。考虑假设是1->1->1这样的情况。当你把第二个1删掉之后。指针一定要保留在第一个的位置,这样才干够接着推断这个1与再下一个1是不是相等(即第一个1和第3个1)。
唯一须要格外注意的情况就是最后两个,因为你要p.next=p.next.next来删除,所以对于最后两个不存在next的next。所以直接等于null就好啦
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; } }
相关文章推荐
- Java学习之ThreadLocal
- java中boolean与字符串或者数字1和0的转换
- [Java] 新生代和老年代垃圾回收策略
- NoSuchMethodError: javax.servlet.ServletContext.getContextPath()Ljava/lang/String
- [Java] 引用类型
- java__线程通信02
- Spring 向页面传值以及接受页面传过来的参数的方式
- Java 创建过滤器 解析xml文件
- DI注解
- javah 找不到 'xxx' 的类文件
- Spring自定义一个拦截器类SomeInterceptor,实现HandlerInterceptor接口及其方法的实例
- [Java] 堆和栈的区别
- Spring揭秘读书笔记 八 数据访问异常体系
- Spring揭秘读书笔记 八 数据访问异常体系
- <Java Web学习初级阶段>表格实现简单的注册页面
- 关于Java中 Class.forName();
- struts自定义拦截器配置
- java中volatile相关
- volatile关键字解析
- 数字使用相应的加密策略传递一个字符串后Java实现代码