检查数组中的任何值是否等于添加到数组的当前值

Check if any value in array is equal to current value added to array

本文关键字:数组 添加 于添加 任何值 是否 检查      更新时间:2023-10-16

我的2D数组初始化为Storage[100][3]

我将一个组值插入数组的每一行,然后继续进行下一行,然后执行相同的操作,例如:

1 1 3

2 5 6

3 1 3

(保持到100行(

完成整个行的插入后,我想检查当前插入列的2和3中的值是否匹配上一行的所有值,第2和3列的值。

例如,在上面的数据集中,我在每一行中查看第2列和第3列,并看到第1和3行在这些列中具有相同的值。

我编写了一个程序,可以将当前插入与以前的插入进行比较。但是我想将当前插入与数组中的所有插入进行比较。

const int col=0;
//inserting the values//
for (int row= 0; row < 100; row++) {
    storage[row][col] = t;
    storage[row][col += 1] = xi;
    storage[row][col += 2] = yi;
}
//trying to check if the values are same. need help here//
for (int row = 0; row < 100; row++) {
    if (storage[row][col + 1]==storage[row + 1][col + 1] 
        && storage[row][col + 2] == storage[row + 1][col + 2]) {
    }
}
for (int row = 1; row < 100; row++) {
    for (int prevRow = 0; prevRow < row; prevRow++) {
        if (storage[row][1] == storage[prevRow][1]
            && storage[row][2] == storage[prevRow][2]) {
            // do something...
        }
    }
}

外循环从row = 1开始,因为第0行0没有以前的行比较。

如果要创建一种算法,该算法可以很好地缩放O(log2n(,而不是O(n^2(尝试使用哈希表来跟踪遇到的数字。我第一次迭代的示例号是4、2、3。
您可以计算出遇到重复数字的次数,最重要的是,您不必进行loop搜索自己

的繁重举重
int main(array<System::String ^> ^args)
{
   std::map<int, int> twoColsCounts;
   int storage[100][3];
   int ordinal1 = 4;
   int ordinal2 = 2;
   int ordinal3 = 3;
   for (int i = 0; i < 100; i++)
   {
      storage[i][0] = ordinal1;
      storage[i][1] = ordinal2;
      storage[i][2] = ordinal3;
      int lastTwoDigits = ordinal2 * 10 + ordinal3;
      auto inMapRecord = twoColsCounts.find(lastTwoDigits);
      if (inMapRecord != twoColsCounts.end())
      {
         // Number Already Found.  Increment count for posterity!
         twoColsCounts[lastTwoDigits]++;
      }
      else
      {
         // Not already encountered - Add it to record with count of 1
         twoColsCounts[lastTwoDigits] = 1;
      }
   }
    Console::WriteLine(L"Done 'big data' style!");
    return 0;
}

祝你好运!