Q
极其稀疏数组
6
A
回答
7
首先,我认为简单的数组是很清楚错误的数据结构,为您的问题。
如何使用dictionary,你用一个4 tuple为指标?
var lookup = new Dictionary<Tuple<int,int,int,int>, int>();
我从来没有这样做过,但它应该可以正常工作。如果你没有准备好Tuple
因为你与之前版本的.NET 4 .NET Framework的工作,你可以提供自己的索引类型:
struct LookupKey
{
public readonly int First;
public readonly int Second;
public readonly int Third;
public readonly int Fourth;
…
}
var lookup = new Dictionary<LookupKey, int>();
0
使用哈希表(通用字典已经被实现为哈希表)。作为4维索引的关键使用向量。作为价值存储你想要的东西。
1
您可以使用普通的Dictionary
或创建一个适合您需要的类似地图(这将是一个数组,您可以根据您的4值计算散列值来放置元素),但您需要关心碰撞。
也是一个二进制SEACH树可以使的伎俩,如果你接受查找对数复杂..
0
我会做的是用散列表,而不是“正常”阵列对于这一点,那么(伪代码):
// first, check bounds:
if(x < 0 || y < 0 || z < 0 || w < 0
|| x > xsize || y > ysize || z > zsize || w > wsize)
throw new Whatever(...);
// now return value if != 0
if(x in arr && y in arr[x] && z in arr[x][y] && w in arr[x][y][z])
return arr[x][y][z][w];
else
return 0;
0
我认为最好的方法是使用一个哈希表(Dictionary<T, int>
),与包含4个指标的自定义struct
索引。不要忘记在struct
上覆盖object.Equals()
和object.GetHashCode()
。
相关问题
- 1. Scipy稀疏...数组?
- 2. 元组的稀疏数组
- 3. 稀疏三元组稀疏矩阵matlab
- 4. Haskell中的稀疏数组?
- 5. 稀疏数组的长度
- 6. 填充稀疏数组
- 7. 是稀疏数据
- 8. 从npy文件加载稀疏数组
- 9. matlab中的稀疏矩阵数组
- 10. 的Fortran:稀疏数组或列表
- 11. Node.js中JavaScript/ECMAScript数组是否“稀疏”?
- 12. 排列密度和稀疏数组
- 13. 从稀疏生存模型提取系数与稀疏= T
- 14. 检查稀疏
- 15. 稀疏矩阵
- 16. 在稀疏表
- 17. Matlab的稀疏svd函数
- 18. Django稀疏数据模型
- 19. 表示稀疏整数集?
- 20. 自动完成对'组织稀疏,tree`和'有机匹配,稀疏tree`
- 21. 将数组列表转换为稀疏数组
- 22. 将二维数组转换为一个稀疏数组阵列
- 23. 在Python中稀疏LIL矩阵中极慢的总和操作
- 24. 用极稀疏矩阵乘法的最快方法是什么?
- 25. 以稀疏矩阵
- 26. 稀疏矢量pyspark
- 27. 稀疏模式MarkerFaceColor
- 28. 50Kx50K稀疏矩阵
- 29. 编译稀疏0.4.1
- 30. 转换SciPy的稀疏矩阵元组
如果您使用自定义对象并正确实现了'Equals()'和'GetHashCode()',那么'Dictionary'将自行处理碰撞。 – svick 2010-10-24 13:39:23