博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
leetcode82. Remove Duplicates from Sorted List II
阅读量:7079 次
发布时间:2019-06-28

本文共 1431 字,大约阅读时间需要 4 分钟。

题目要求

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.

翻译:将链表中重复的元素全部删除,返回新的头结点。

相比于Remove Duplicates from Sorted List I,这里将重复的元素全部删除。

想要了解Remove Duplicates from Sorted List I,请参考我的这篇

思路和代码

这里,我们首先需要一个伪头节点指向当前的头节点,以确保我们最后能够找到结果集的头节点。除此以外,我们还需要知道重复元素的前一个值和重复元素的最后一个值。

举个例子:如果数组元素为[1,2,2,3],那么我们需要知道1这个节点和3这个节点的位置,并将1的下一个节点指向3。特殊情况,如[1,1,2,2],这是我们就可以将伪头结点作为我们的前节点,并将2作为我们的后节点。如果存在重复值,则跳过重复值后,前节点不变,否则前节点跟随后节点同时向后移动。代码如下:

public ListNode deleteDuplicates(ListNode head) {        if(head==null || head.next==null){            return head;        }        ListNode start = new ListNode(0);        start.next = head;        ListNode prevNode = start;        ListNode current = head;        while(current != null){            if(current.next != null && current.val == current.next.val){                do{                    current = current.next;                }while(current.next != null && current.val == current.next.val);                prevNode.next = current.next;            }else{                prevNode = current;            }            current = current.next;        }        return start.next;    }        public class ListNode {        int val;        ListNode next;        ListNode(int x) { val = x;}    }

clipboard.png

想要了解更多开发技术,面试教程以及互联网公司内推,欢迎关注我的微信公众号!将会不定期的发放福利哦~

转载地址:http://envml.baihongyu.com/

你可能感兴趣的文章
Python 5.5 使用枚举类
查看>>
cookie禁用后session id传值的问题
查看>>
android 动画AnimationSet 和 AnimatorSet
查看>>
Ubuntu添加用户实用指南
查看>>
时空大数据来了,纽约公开11亿条出租车和Uber原始数据(英文版)
查看>>
Dharma勒索软件继续大肆传播,据称已有100多家希腊网站沦陷
查看>>
成为JavaGC专家(1)—深入浅出Java垃圾回收机制
查看>>
Linux学习笔记(十七) vim
查看>>
三十二、iptables filter表小案例、iptables nat表应用
查看>>
Linux第一周学习笔记(4)
查看>>
袋鼠云数据中台专栏2.0 | 数据中台之数据集成
查看>>
当P4遇见NAT64,UCloud如何快速从IPv4向IPv6演进?
查看>>
iOS少用的框架
查看>>
ups锂电池的优势
查看>>
关于程序员和***区别在哪里?
查看>>
tomcat启动报错Invalid character found in method name. HTTP method names must be tokens
查看>>
appium+python3.6
查看>>
RAID cache的作用及更换RAID 电池注意事项
查看>>
如何挖掘和优化长尾关键词?
查看>>
windows下安装解压版mysql
查看>>