标签: data-structures

后缀树和尝试.有什么不同?

我正在阅读Tries通常称为前缀树和Suffix Trees.
虽然我找到了代码,但Trie我找不到一个例子Suffix Tree.此外,我感觉构建a的代码与a的代码Trie相同,Suffix Tree唯一的区别是在前一种情况下我们存储前缀但在后面的后缀中.
这是真的?任何人都可以帮我解决这个问题吗?一个示例代码将是很好的帮助!

algorithm suffix-tree trie data-structures

70
推荐指数
2
解决办法
3万
查看次数

KD树和R树之间有什么区别?

我看了KD树和R树的定义.在我看来,他们几乎是一样的.

KD树和R树之间有什么区别?

kdtree r-tree data-structures

69
推荐指数
3
解决办法
2万
查看次数

设计网络爬虫

我遇到了一个采访问题"如果你正在设计一个网络爬虫,你将如何避免进入无限循环?"我试图回答它.

这一切从一开始就是如何开始的.比如谷歌开始时,一些中心页面上说有数百个(首先如何找到这些中心页面是一个不同的子问题).当Google跟踪来自页面的链接等时,它是否继续制作哈希表以确保它不遵循先前访问过的页面.

如果同一页面有2个名称(URL),如果我们有URL缩短器等,那么该怎么办呢?

我以谷歌为例.虽然谷歌没有泄漏其网络爬虫算法和页面排名等的工作方式,但任何猜测?

search-engine large-data-volumes web-crawler google-search data-structures

69
推荐指数
2
解决办法
4万
查看次数

反转字符串中单词的顺序

我有这个string s1 = "My name is X Y Z",我想扭转这些词的顺序s1 = "Z Y X is name My".

我可以使用额外的数组来做到这一点.我认为很难,但有可能在现场(不使用额外的数据结构)并且时间复杂度为O(n)吗?

string algorithm data-structures

68
推荐指数
4
解决办法
19万
查看次数

如何在C中实现循环缓冲区?

我需要一个固定大小(在创建它时可在运行时选择,而不是编译时)循环缓冲区,它可以容纳任何类型的对象,并且它需要非常高的性能.我不认为会有资源争用问题,因为虽然它是在多任务嵌入式环境中,但它是一个合作的,所以任务本身可以管理它.

我最初的想法是在缓冲区中存储一个简单的结构,它包含类型(简单的枚举/定义)和一个指向有效负载的void指针,但我希望它尽可能快,所以我愿意接受绕过的建议堆.

实际上我很高兴绕过任何标准库的原始速度 - 从我所看到的代码来看,它没有针对CPU进行大量优化:看起来他们只是为了类似的东西编译C代码,strcpy()没有手工编码组装.

任何代码或想法将不胜感激.所需的操作是:

  • 创建具有特定大小的缓冲区.
  • 放在尾巴上.
  • 从头上得到.
  • 归还计数.
  • 删除缓冲区.

c circular-buffer data-structures

66
推荐指数
5
解决办法
20万
查看次数

LRU缓存设计

最近最少使用(LRU)缓存首先丢弃最近最少使用的项目如何设计和实现这样的缓存类?设计要求如下:

1)尽可能快地找到项目

2)一旦缓存未命中并且缓存已满,我们需要尽快替换最近最少使用的项目.

如何在设计模式和算法设计方面分析和实现这个问题?

c++ algorithm lru data-structures

66
推荐指数
3
解决办法
6万
查看次数

Python中最有效的图形数据结构是什么?

我需要能够在python中操作一个大的(10 ^ 7个节点)图形.对应于每个节点/边缘的数据是最小的,例如,少量的字符串.在内存和速度方面,最有效的方法是什么?

dicts的词典更灵活,更易于实现,但我直观地期望列表列表更快.list选项还要求我将数据与结构分开,而dicts允许这样的东西:

graph[I][J]["Property"]="value"
Run Code Online (Sandbox Code Playgroud)

你会建议什么?


是的,我应该对效率的意思更清楚一点.在这个特殊情况下,我的意思是随机访问检索.

将数据加载到内存中不是一个大问题.这是一劳永逸的.耗时的部分是访问节点,因此我可以提取信息并测量我感兴趣的指标.

我没有考虑过让每个节点成为一个类(所有节点的属性都相同),但似乎会增加一层额外的开销?我希望有人可以直接体验他们可以分享的类似案例.毕竟,图形是CS中最常见的抽象之一.

python performance graph-theory data-structures

65
推荐指数
3
解决办法
3万
查看次数

Trie实施

在C/C++中是否有任何速度和缓存效率的trie实现?我知道什么是特里,但我不想重新发明轮子,自己实施.

c c++ trie data-structures

65
推荐指数
4
解决办法
4万
查看次数

Java中contains()的最快数据结构?

Java中哪些数据结构对contains()的运行速度最快?

例如,我有一组数字{1,7,12,14,20 ...}

给定另一个任意数x,生成布尔值的最快方式(平均)是否包含在集合中?!contains()的概率大约高出5倍.

所有地图结构都提供o(1)操作吗?HashSet是最快的方式吗?

java set data-structures

65
推荐指数
3
解决办法
4万
查看次数

对于非常长的字符串列表,什么是合适的搜索/检索方法?

这不是一个非常罕见的问题,但我似乎无法找到真正解释选择的答案.

我有一个非常大的字符串列表(确切地说是SHA-256哈希的ASCII表示),我需要查询该列表中是否存在字符串.

此列表中可能会有超过1亿条目,我需要多次重复查询条目的存在.

考虑到尺寸,我怀疑我可以把它全部塞进去HashSet<string>.什么是适当的检索系统,以最大限度地提高性能?

我可以预先对列表进行排序,我可以把它放到一个SQL表中,我可以把它放到一个文本文件中,但我不确定在我的应用程序中哪些是最有意义的.

这些或其他检索方法在性能方面是否有明显的优势?

c# lookup performance data-structures

65
推荐指数
10
解决办法
3864
查看次数