【试题描述】定义一个函数,输入一个链表,删除无序链表中重复的节点

【参考代码】

方法一:

Without a buffer, we can iterate with two pointers: “current” does a normal iteration, while 
“runner” iterates through all prior nodes to check for dups Runner will only see one dup 
per node, because if there were multiple duplicates they would have been removed already

 1 public static void deleteDups(LinkList head)
 2     {
 3         if (head == null)
 4             return;
 5         Link previous = head.first;
 6         Link current = previous.next;
 7         while (current != null)
 8         {
 9             Link runner = head.first;
10             while (runner != current)
11             {
12                 if (runner.id == current.id)
13                 {
14                     Link tmp = current.next;
15                     previous.next = tmp;
16                     current = tmp;
17                     break;
18                 }
19                 runner = runner.next;
20             }
21
22             if (runner == current)
23             {
24                 previous = current;
25                 current = current.next;
26             }
27         }
28
29         System.out.println("-----------");
30         head.displayList();
31     }

方法二:

If we can use a buffer, we can keep track of elements in a hashtable and remove any dups:

    public static void deleteDups2(LinkList head)
{
if (head == null)
return;
Hashtable table = new Hashtable();
Link previous = null;
Link current = head.first;
while (current != null)
{
if (table.containsKey(current.id))
previous.next = current.next;
else
{
table.put(current.id, true);
previous = current;
}
current = current.next;
}
System.out.println("-----------");
head.displayList();
}

【IT笔试面试题整理】删除无序链表中重复的节点相关推荐

  1. 面试题18: 删除链表节点:删除链表中重复的节点

    /******************************************************************* *<剑指Offer--名企面试官精讲典型编程题>C ...

  2. 《程序员代码面试指南》第二章 链表问题 删除无序链表中值重复的链表

    样例 998 998 998 999 999 999 1000 1000 1000 删除后为998 999 1000 java代码 /*** @Description:删除无序链表中值重复的链表* @ ...

  3. 用O(1)的时间复杂度删除单链表中的某个节点

    用O(1)的时间复杂度删除单链表中的某个节点 给定链表的头指针和一个结点指针,在O(1)时间删除该结点.链表结点的定义如下: struct ListNode {int m_nKey;ListNode* ...

  4. 剑指offer:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。

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

  5. python删除链表中重复的节点_剑指offer:删除链表中重复的节点

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

  6. python实现剑指offer删除链表中重复的节点

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

  7. python删除链表中重复的节点_Java编程删除链表中重复的节点问题解决思路及源码分享...

    一. 题目 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针. 二. 例子 输入链表:1->2->3->3->4->4-&g ...

  8. 《剑指offer》删除链表中重复的节点

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

  9. 牛客题霸 [删除有序链表中重复的元素] C++题解/答案

    牛客题霸 [删除有序链表中重复的元素] C++题解/答案 题目描述 删除给出链表中的重复元素(链表中元素从小到大有序),使链表中的所有元素都只出现一次 例如: 给出的链表为1\to1\to21→1→2 ...

最新文章

  1. 今年下半年,中日合拍的《Git游记》即将正式开机,我将...(上集)
  2. 银行背景下分库分表技术选型
  3. xhost display 详解
  4. how to extend odata service
  5. 十年 IT 老兵带你通过案例学架构,附C#代码
  6. Hbase单点安装Version1.1.5
  7. Mybatis学习笔记-CURD(基于配置文件的方式)
  8. linux systemd命令,systemd命令
  9. 矩阵手册(四)—— 增广矩阵
  10. 拓端tecdat|matlab对MCMC贝叶斯方法用于加筋复合板的冲击载荷识别
  11. 记录windows游戏编程——1
  12. 服务器多开虚拟机怎么使用教程,游戏多开,你需要这个虚拟机教程
  13. 计算机网络可以划分几个阶段,计算机网络的发展可以划分为几个阶段.doc
  14. 聚类-KMeans算法(图解算法原理)
  15. Linux基础命令(管理工具)
  16. 有哪些产品适合做引流?什么样的产品才适合做引流款
  17. 300多张精美京剧脸谱,收藏~~
  18. 概率统计:互不相容与相互独立
  19. 杨辉三角 c语言 二维数组
  20. 31年前的Beyond演唱会,是如何超清修复的?

热门文章

  1. 重庆大学计算机学院就读,唐远炎(计算机学院)老师 - 重庆大学 - 院校大全
  2. Linux之ssh服务默认端口修改
  3. Hibernate学习之Hibernate注解总结
  4. 五分钟入门 Dingo API
  5. 隐藏apache版本号的方法
  6. Nginx实现404页面的几种方法
  7. HDU 3974 Assign the task(dfs时间戳+线段树成段更新)
  8. AR-关于应收票据的系统操作说明
  9. javascript实现汉诺塔动画效果
  10. 浅谈:ArrayList,ListT,ListObject