【Java】编写代码,移除未排序链表中的重复结点
来源:互联网 发布:许巍 完美生活 知乎 编辑:程序博客网 时间:2024/04/30 15:54
移除重复结点,需要知道哪些结点是重复的,可以用一个哈希表, 如果有重复的元素,则将该元素从链表里删除,然后继续迭代
hashtable基本用法:
int size();得到键值对数
boolean isEmpty();判断是否为空
boolean containsKey(Object key);判断是否包含以key为键的键值对
boolean containsValue(Object key);判断是否包含以key为值的键值对
Object get(Object key);获取以key为键的对应的值
Object put(Object key, Object value);增加key为键value为值的键值对
Object remove(Object key);去除键为key的键值对
void clear();去除去部键值对
import java.util.Hashtable;public static void deleteDups(LinkListNode n) {LinkListNode previous = null;Hashtable table = new Hashtable();while(n != null){if (table.containsKeys(n.data)) {preious.next = n.next;}else {table.put(n.data, true);previous = n;}n = n.next;}}
进阶:如果不得使用缓冲区
用两个指针,一个current迭代地访问整个链表,一个runner用于检查每个current后续结点是否重复,这样做的时间复杂是O(n2), 空间复杂度是O(1)
public static void deleteDupsNew(LinkListNode head) {if (head == null) return;LinkListNode current = head;while(current != null){LinkListNode runner = current;while (runner.next != null){if(runner.next.data == current.data){runner.next = runner.next.next;}else{runner = runner.next;}}current = current.next;}}
0 0
- 【Java】编写代码,移除未排序链表中的重复结点
- 移除未排序链表中的重复结点
- 移除未排序链表中的重复结点
- 移除未排序链表中的重复结点
- 《CTCI》2.1 移除未排序链表中的重复结点
- 9.2链表(一)——移除未排序链表中的重复结点
- 程序员面试金典2.1:编写代码,移除未排序的链表中的重复节点
- Chapter 2 | Linked Lists--移除未排序链表中的重复项
- CCI 2.1 移除未排序链表中的重复节点
- 移除未排序链表中的重复节点算法实现
- 程序员面试金典(4)移除未排序链表的重复节点
- 删除链表中的重复结点-Java
- 删除链表中的重复结点
- 删除链表中的重复的结点
- 程序员面试金典: 9.2链表 2.1移除未排序链表中重复的节点
- cc150:从一个未排序的链表中移除重复项
- Java - 计蒜客 - 移除数组中的重复元素
- 剑指offer51--删除排序链表重复结点
- 设置Adobe Reader为default的PDF阅读工具
- iOS 开发之照片框架详解PhotoKit,ALAssetsLibrary
- SharePoint 2013 场解决方案包含第三方程序集
- TOMCAT修改进程号及端口
- Android Socket 发送数据失败sendto failed: ERROR:EPIPE(Borken pipe)
- 【Java】编写代码,移除未排序链表中的重复结点
- vs编译错误(一)
- ubuntu文件系统结构讲解
- Android事件传递机制
- 指针与引用(函数形参的值传递,引用传递,指针传递)
- 反射
- iterator源代码
- Android Support Library更新到v22.1之AppCompat新特性
- 黑马程序员——OC—OC中面向的对象特征之继承和派生