我需要一个数据结构,将能够为给定的int提供前面和后面的邻居,这是结构的一部分。
我现在使用的是int[]和HashMap的组合:
我很想知道更好的解决办法。
一个解决方案是在添加元素时对数组进行排序。这样,前一个元素总是i-1
,要找到一个值,可以使用二进制搜索,即O(log(N))。
下一个明显的候选者是平衡二叉树。对于这种结构,insert有点昂贵,但查找也是O(log(N))。
如果这些值不是32bit,那么您可以使用第二个数组来加快查找速度,其中每个值都是第一个数组中的索引,而该索引就是您要查找的值。
相关的:
我有两个集合A和B的元素a和b。现在它们彼此相关(0...1: n基数),所以每个a在B中最多有一个伙伴,每个b可以与A中的项目有几个(至少一个)关联。A是一组整数对,B是整数。 有没有有效的方法来存储这种“双向”地图?一种简单的方法是使用两种地图: 但也许有更好的方法来更有效地处理这个问题。 谢谢你的帮助
我目前正在研究普林斯顿算法第一部分的队列分配。其中一个任务是实现随机队列。这是一个关于使用不同数据结构的实现和权衡的问题。 问题: 随机化队列类似于堆栈或队列,只是从数据结构中的项中均匀随机地选择删除的项。创建实现以下API的通用数据类型: 这里的问题是实现de队列操作和迭代器,因为de队列删除并返回随机元素,迭代器以随机顺序迭代队列。 1.数组实现: 我考虑的主要实现是数组实现。除了随机性之外,
本文向大家介绍随机链表的复制相关面试题,主要包含被问及随机链表的复制时的应答技巧和注意事项,需要的朋友参考一下 考察点:链表
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> function Node(element){ this.element=element; this.next=null; } function Point(x,
洗牌算法 洗牌算法,顾名思义,就是只利用一次循环等概率的取到不同的元素(牌)。 如果元素存在于数组中,即可将每次 random 到的元素 与 最后一个元素进行交换,然后 count—,即可。 这相当于把这个元素删除,代码如下: #include <iostream> #include <ctime> using namespace std; const int maxn = 10; int a[m
本文向大家介绍浅谈PHP链表数据结构(单链表),包括了浅谈PHP链表数据结构(单链表)的使用技巧和注意事项,需要的朋友参考一下 链表:是一个有序的列表,但是它在内存中是分散存储的,使用链表可以解决类似约瑟夫问题,排序问题,搜索问题,广义表 单向链表,双向链表,环形链表 PHP的底层是C,当一个程序运行时,内存分成五个区(堆区,栈区,全局区,常量区,代码区) 规定:基本数据类型,一般放在栈区 复合数