2个或更多阵列的唯一表示

时间:2011-02-19 18:00:51

标签: algorithm

我有几个固定长度的数组,每个组件都可以采用自然数值。在我的程序中,2个向量在这个简单的情况下是相同的 0001112 1110002

2220001也与这两个数组相同

我的问题是如何才能获得这两个数组的唯一表示?

干杯

3 个答案:

答案 0 :(得分:0)

如何定义等价关系并不完全清楚,但是从数组中构建集合表示会满足您给出的约束。有两种方法可以做到这一点:

  1. 转换为适当的数据结构(集合内置多种语言,否则哈希表或BST会这样做。)
  2. 对每个数组进行排序,删除重复的元素并截断它们。由于它们是固定长度的,因此您必须在某处存储不同元素的数量,或使用-1来表示“元素结束”。

答案 1 :(得分:0)

一种方法是将它们存储在字典(哈希表)中,将每个数字映射到它出现的次数。您的两个数组将具有相同的表示形式:

{0: 3, 1: 3, 2: 1}

答案 2 :(得分:0)

public static List<int> GetUniqueRepresentation(int[] array)
{
    int count = 1;
    var output = new List<int>();
    for (int i = 1; i <= array.Length; i++)
    {
        if (i < array.Length && array[i] == array[i - 1])
        {
            count++;
        }
        else
        {
            output.Add(count);
            count = 1;
        }
    }

    return output;
}