noaman_wgs

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

【题目】在一个排序的链表中,存在重复的结点,
* 请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。
* 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5

 1 package com.exe7.offer;
 2 
 3 /**【题目】在一个排序的链表中,存在重复的结点,
 4  * 请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 
 5  * 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
 6  * @author WGS
 7  */
 8 public class DeleteDuplication {
 9 
10     public class ListNode{
11         int val;
12         ListNode next=null;
13         public ListNode(int val){
14             this.val=val;
15         }
16     }
17     
18     public ListNode deleteDuplicationNodes(ListNode headNode){
19         if(headNode==null) return headNode;
20         ListNode indexNode=new ListNode(-1);
21         indexNode.next=headNode;
22         ListNode preNode=indexNode;
23         ListNode curNode=headNode;
24         
25         while(curNode!=null && curNode.next!=null){
26             if(curNode.val==curNode.next.val){
27                 int val=curNode.val;
28                 while(curNode!=null && curNode.val==val){
29                     curNode=curNode.next;
30                 }
31                 preNode.next=curNode;
32             }else{//前后不重复
33                 preNode=curNode;
34                 curNode=curNode.next;
35             }
36         }
37     
38         return indexNode.next;
39     }
40 }

 

posted on 2016-06-08 16:16  noaman_wgs  阅读(139)  评论(0编辑  收藏  举报