两种方法实现:

package cn.exercise.list;

import java.util.HashMap;

/**

* 删除链表重复节点(重复节点只保留一个)

*/

public class DeleteDuplecate {

/**

* HashMap,时间复杂度o(n)

* @param head

* @return

*/

public static ListNode deleteDulp(ListNode head){

if(head==null || head.next==null)

return head;

HashMap map=new HashMap();

ListNode p=new ListNode(-1);//加一个头结点

p.next=head;

ListNode pre=p;//两个一前一后临时指针

ListNode cur=p.next;

while(pre!=null && pre.next!=null){

if(map.containsKey(cur.val)){

pre.next=cur.next;

cur=cur.next;

}else{

map.put(cur.val,1);

pre=cur;

cur=cur.next;

}

}

return p.next;

}

/**

* 双重循环遍历链表,时间复杂度o(n^2)

* @param head

* @return

*/

public static ListNode deleteDulp2(ListNode head){

if(head==null || head.next==null)

return head;

ListNode p=head;

ListNode root=p;

while(p!=null){

ListNode q=p;

while(q.next!=null){

if(p.val==q.next.val){

q.next=q.next.next;

}else{

q=q.next;

}

}

p=p.next;

}

return root;

}

public static void main(String[] args){

ListNode root=new ListNode(1);

ListNode b=new ListNode(2);

ListNode c=new ListNode(4);

ListNode d=new ListNode(2);

ListNode e=new ListNode(5);

ListNode f=new ListNode(4);

ListNode g=new ListNode(3);

ListNode h=new ListNode(5);

root.next=b;

b.next=c;

c.next=d;

d.next=e;

e.next=f;

f.next=g;

g.next=h;

while(root!=null){

System.out.print(root.val+" ");

root=root.next;

}

System.out.print("after:");

ListNode pre=deleteDulp2(root);

while(pre!=null){

System.out.print(pre.val+" ");

pre=pre.next;

}

}

}

before:1 2 4 2 5 4 3 5

结果:

after:1 2 4 5 3

删除链表重复节点 python_java删除链表中重复的节点(保留一个节点)相关推荐

  1. python去重复行_python去除文件中重复的行实例

    python去除文件中重复的行,我们可以设置一个一个空list,res_list,用来加入没有出现过的字符行! 如果出现在res_list,我们就认为该行句子已经重复了,可以再加入到记录重复句子的li ...

  2. 《剑指offer》-- 第一个只出现一次的字符、数组中只出现一次的数字、字符流中第一个不重复的字符、数组中重复的数字

    一.第一个只出现一次的字符: 1.题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写 ...

  3. python3 数组重复数字,[python3] 3_01 数组中重复的数字

    题目如下 题目.png 思路1 将输入数组排序,从头到尾扫描排序后的数组. 代码如下 # 03_01_FindDuplication.py class Solution(object): def du ...

  4. HTML怎么去除数组的重复元素,js去除数组中重复元素并排序

    /p> "http://www.w3.org/TR/html4/strict.dtd"> 003_obj //去掉数组中重复的元素 var arr=[1,2,2,3,3 ...

  5. java list 重复数据_java 查找list中重复数据实例详解

    java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...

  6. php 数组重复最多,PHP获取数组中重复最多元素的简单示例

    这篇文章主要为大家详细介绍了PHP获取数组中重复最多元素的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧! 本文实例讲述了PHP获取数组中重复最 ...

  7. 二叉树中序遍历的下一个节点

    题目描述: 给定一棵二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左.右子节点的指针,还有一个指向父节点的指针. 解题思路: 这道题意即:给定一个节点,按照中序 ...

  8. 【二叉树】剑指offer:二叉树中序遍历的下一个节点

    思路一:vector存放中序遍历,然后查找输出 注意: pNode是待查找节点,因为要通过父节点遍历二叉树,所以首先要找到父节点 TreeNode *temp=t; TreeNode *root; w ...

  9. 删除不同粒度的事实表记录中重复的度量值数据的SQL语句

    update vtronstaging.dbo.fact_t_purchasing set 通知数量 = 0, 通知单号 =0  where 通知单ID is null update vtronsta ...

最新文章

  1. lLinux网络相关命令,防火墙介绍及相关命令
  2. RDIFramework.NET ━ .NET快速信息化系统开发框架-4.1 平台登录模块
  3. 自动化测试:Selenium webdriver 学习笔记-C#版(四)
  4. Python实现九九乘法表
  5. spring boot自定义配置文件
  6. [AtCoder Regular Contest 123] 题解
  7. Hibernate关联映射(一对多/多对多)
  8. ArcGIS将CAD等高线转换为TIN/DEM数据
  9. 谁说菜鸟不会数据分析--读书笔记
  10. Raki的读paper小记:SUBSPACE REGULARIZERS FOR FEW-SHOT CLASS INCREMENTAL LEARNING
  11. 视频教程-EXCEL VBA编程进阶-Office/WPS
  12. 计算机的标准输入法,ALKATIP输入法电脑版
  13. 基于Mybatis的语音播报随机点到系统
  14. C++ friend和protected
  15. 网吧服务器哪个好稳定,网吧服务器不应盲目追高新:够用稳定就好
  16. 分享50款漂亮的免费经典英文复古字体
  17. (五)结合大彩屏介绍Bus Hound:cmd.Phase.ofs(rep)
  18. 构建单拷贝同源蛋白系统发育树,一条命令提序列!
  19. 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest 补题
  20. 如何利用CCleaner快速查找重复文件?

热门文章

  1. Python入门100题 | 第069题
  2. 深度学习100例-卷积神经网络(CNN)识别眼睛状态 | 第17天
  3. 基于DOS命令打war包
  4. Best practice for JVM Tuning[转]
  5. 《京东技术解密》——海量订单处理
  6. Want to archive tables? Use Percona Toolkit’s pt-archiver--转载
  7. Guide: Solr performance tuning--转载
  8. SonarQube代码质量管理平台安装与使用--转载
  9. 杨鹏谈世纪佳缘推荐算法:基于Spark GraphX,弃GBDT和LR用FM
  10. OpenStack行业实践和发展趋势