删除链表重复节点 python_java删除链表中重复的节点(保留一个节点)
两种方法实现:
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删除链表中重复的节点(保留一个节点)相关推荐
- python去重复行_python去除文件中重复的行实例
python去除文件中重复的行,我们可以设置一个一个空list,res_list,用来加入没有出现过的字符行! 如果出现在res_list,我们就认为该行句子已经重复了,可以再加入到记录重复句子的li ...
- 《剑指offer》-- 第一个只出现一次的字符、数组中只出现一次的数字、字符流中第一个不重复的字符、数组中重复的数字
一.第一个只出现一次的字符: 1.题目: 在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写 ...
- python3 数组重复数字,[python3] 3_01 数组中重复的数字
题目如下 题目.png 思路1 将输入数组排序,从头到尾扫描排序后的数组. 代码如下 # 03_01_FindDuplication.py class Solution(object): def du ...
- HTML怎么去除数组的重复元素,js去除数组中重复元素并排序
/p> "http://www.w3.org/TR/html4/strict.dtd"> 003_obj //去掉数组中重复的元素 var arr=[1,2,2,3,3 ...
- java list 重复数据_java 查找list中重复数据实例详解
java 查找list中重复数据实例详解 需求: 查找一个List集合中所有重复的数据,重复的数据可能不止一堆,比如:aa, bb, aa, bb, cc , dd, aa这样的数据.如果有重复数据, ...
- php 数组重复最多,PHP获取数组中重复最多元素的简单示例
这篇文章主要为大家详细介绍了PHP获取数组中重复最多元素的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧! 本文实例讲述了PHP获取数组中重复最 ...
- 二叉树中序遍历的下一个节点
题目描述: 给定一棵二叉树和其中的一个节点,如何找出中序遍历序列的下一个节点?树中的节点除了有两个分别指向左.右子节点的指针,还有一个指向父节点的指针. 解题思路: 这道题意即:给定一个节点,按照中序 ...
- 【二叉树】剑指offer:二叉树中序遍历的下一个节点
思路一:vector存放中序遍历,然后查找输出 注意: pNode是待查找节点,因为要通过父节点遍历二叉树,所以首先要找到父节点 TreeNode *temp=t; TreeNode *root; w ...
- 删除不同粒度的事实表记录中重复的度量值数据的SQL语句
update vtronstaging.dbo.fact_t_purchasing set 通知数量 = 0, 通知单号 =0 where 通知单ID is null update vtronsta ...
最新文章
- lLinux网络相关命令,防火墙介绍及相关命令
- RDIFramework.NET ━ .NET快速信息化系统开发框架-4.1 平台登录模块
- 自动化测试:Selenium webdriver 学习笔记-C#版(四)
- Python实现九九乘法表
- spring boot自定义配置文件
- [AtCoder Regular Contest 123] 题解
- Hibernate关联映射(一对多/多对多)
- ArcGIS将CAD等高线转换为TIN/DEM数据
- 谁说菜鸟不会数据分析--读书笔记
- Raki的读paper小记:SUBSPACE REGULARIZERS FOR FEW-SHOT CLASS INCREMENTAL LEARNING
- 视频教程-EXCEL VBA编程进阶-Office/WPS
- 计算机的标准输入法,ALKATIP输入法电脑版
- 基于Mybatis的语音播报随机点到系统
- C++ friend和protected
- 网吧服务器哪个好稳定,网吧服务器不应盲目追高新:够用稳定就好
- 分享50款漂亮的免费经典英文复古字体
- (五)结合大彩屏介绍Bus Hound:cmd.Phase.ofs(rep)
- 构建单拷贝同源蛋白系统发育树,一条命令提序列!
- 2017-2018 ACM-ICPC, Asia Daejeon Regional Contest 补题
- 如何利用CCleaner快速查找重复文件?
热门文章
- Python入门100题 | 第069题
- 深度学习100例-卷积神经网络(CNN)识别眼睛状态 | 第17天
- 基于DOS命令打war包
- Best practice for JVM Tuning[转]
- 《京东技术解密》——海量订单处理
- Want to archive tables? Use Percona Toolkit’s pt-archiver--转载
- Guide: Solr performance tuning--转载
- SonarQube代码质量管理平台安装与使用--转载
- 杨鹏谈世纪佳缘推荐算法:基于Spark GraphX,弃GBDT和LR用FM
- OpenStack行业实践和发展趋势