Remove Duplicates from Sorted List II

本文介绍了一种算法,用于删除已排序链表中的所有重复元素,仅保留唯一值。示例包括将1->2->3->3->4->4->5转换为1->2->5,以及将1->1->1->2->3转换为2->3。提供了完整的Java实现代码。

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.

 1 /**
 2  * Definition for singly-linked list.
 3  * public class ListNode {
 4  *     int val;
 5  *     ListNode next;
 6  *     ListNode(int x) {
 7  *         val = x;
 8  *         next = null;
 9  *     }
10  * }
11  */
12 public class Solution {
13     public ListNode deleteDuplicates(ListNode head) {
14         if(null == head || null == head.next)        //只有1个节点或者空时,直接返回头结点
15             return head;
16         ListNode temp = new ListNode(0);
17         temp.next = head;
18         head = temp;//加一个头结点,不放内容
19         
20         ListNode pre = head;
21         ListNode behind = head.next;
22         ListNode front = behind.next;
23         
24         while(null != front){
25             if(behind.val == front.val){            //如果有相同的,删除掉
26                 while(null != front && behind.val == front.val)
27                     front = front.next;
28                 if(null == front)
29                     pre.next = null;
30                 else{
31                     pre.next = front;
32                     behind = front;
33                     front = front.next;
34                     continue;
35                 }
36             }
37             if(null != front){
38                 front = front.next;
39                 behind = behind.next;
40                 pre = pre.next;
41             }
42         }
43         return head.next;
44     }
45 }

 

转载于:https://www.cnblogs.com/luckygxf/p/4124095.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值