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.
解析: 删除重复出现的元素,可以使用两个指针进行检测和删除,注意头节点和尾节点的处理即可,比较考验边界处理的一道题
代码:
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null||head.next==null)return head;
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode left = dummy;
ListNode right = head;
while(right!=null&&right.next!=null)
{
while(right!=null&&right.next!=null&&right.val==right.next.val)
{
right = right.next;
}
if(left.next==right)
{
left = right;
right = right.next;
}
else
{
left.next = right.next;
right = left.next;
}
}
return dummy.next;
}
}
本文介绍了一种在已排序的链表中去除重复元素的算法。通过使用双指针技巧,实现仅保留唯一数值的功能,同时关注边界条件的处理。代码示例详细解释了实现过程,对于理解链表操作和优化数据结构处理非常有用。

3万+

被折叠的 条评论
为什么被折叠?



