首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用下面的结构创建一个包含3个数字的数组的散列?

用下面的结构创建一个包含3个数字的数组的散列?
EN

Stack Overflow用户
提问于 2018-08-02 21:17:50
回答 1查看 71关注 0票数 0

考虑以下数组:

0 1 0

1 1 1

2 2 0

3 3 1

4 5 1

我正在尝试找到最快的方法来散列数组,这样第三列的其他排列就会给出相同的散列。

例如,下面的代码应该得到与上面相同的哈希值:

0 1 1

1 1 0

2 2 1

3 3 0

4 5 0

第一列将始终从0开始并递增,这是一个索引。第二个基本上可以是任何值。第三列表示类别。只要集合中的类别,包含相同的索引、值对。散列应该是相同的。

例如,来自第一个示例:

类别1: 1、1、4、5

类别0: 0,1

例如,来自第二个示例:

类别1: 0,1

类别0: 1、1、4、5

因为类别集是相同的,所以它们应该产生相同的散列。

我正在尝试编写一个hashcode()函数,它本质上是以最快的方式完成此任务,因为运行时是一个主要关注点。

我目前只是通过按顺序逐个添加成对的整数来为每个类别创建一个堆栈。然后将堆栈添加到集合中,并获得该集合的哈希码。

例如,Stack1 = 1,1,3,3,4,5

例如Stack0 = 0,1,2,2

我将这些堆栈添加到一个集合中,然后得到哈希码。

EN

Stack Overflow用户

发布于 2018-08-03 00:00:09

只需将第三列的总和作为散列值的一部分。所有排列的和都是相同的(也可以使用product或xor )。

或者它们全部相加、异或和乘积,以减少其中列不是排列的第三列的冲突次数。

代码语言:javascript
运行
复制
a f k    
b g l   
c h m 
d i n
e j o

hashCode可以是abcdefghijxyz,其中:

代码语言:javascript
运行
复制
x=k+l+m+n+o  
y=k*l*m*n*o   
z=k^l^m^n^o  
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51654685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档