您的位置:首页 > 其它

删除链表中重复的结点

2019-03-22 18:45 15 查看
版权声明:如需转载,请写明出处 https://blog.csdn.net/weixin_43113679/article/details/88748195

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

/*
public class ListNode {
int val;
ListNode next = null;

ListNode(int val) {
this.val = val;
}
}
*/
public class Solution {
public ListNode deleteDuplication(ListNode pHead)
{
//自己做一个表头就不用考虑第一个是否和第二个重复了
ListNode first = new ListNode(-1);
first.next =pHead;
//很像滑动窗口,但是这个是可以扩大缩小的
ListNode left =pHead;
ListNode right =first;

while(right!=null&&right.next!=null){
if(right.val==right.next.val){
int val =right.val;
//当次节点和后节点相同就要再往后遍历,是否是多个相同还是两个相同
while(right!=null&&right.val == val){
right =right.next;
}
//把刚刚val相同重复的结点删除掉了,
left.next = right;
}else{
//窗口的左边框可以右移现在右边框的位置,右边框再往后移一步
left =right;
right =right.next;
}
}
return first.next;

}
}

链接在这
这个思路挺好的

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: