有关数组和相邻相等数字的问题

时间:2014-06-06 08:35:35

标签: c# arrays

我是高中生,也是C#的新手。我不太确定我的回答是对还是错。

问题: 写一个方法int firstPairOfDuplicates(int [] anArray),它返回anArray中第一对重复数字的索引,其中该对中的两个数字彼此相邻。例如。如果数组包含值{1,9,1,9,9,5,7,7,4},则该方法将返回值3,这是(9,9)对的索引。如果没有相邻的相等数字,则返回-1。您可以假设anArray将包含至少两(2)个元素。

我目前的答案:

public int firstPairOfDuplicates (int[] anArray){

if (int[] anArray = {1, 9, 1, 9, 9, 5, 7, 7, 4}){
return 3

  } else if (){

    return -1

  }

  } // end firstPairOfDuplicates

2 个答案:

答案 0 :(得分:1)

您应该尝试使此方法适用于所有数组,而不仅仅是作为示例提供的数组。 关于如何开始的提示: 评估数组中的每个元素。存储上一个条目并将其与当前条目进行比较。如果值匹配,则返回上一个条目的索引。

尝试这样想:

anArray[0] == anArray[1] ? false
anArray[1] == anArray[2] ? false
anArray[2] == anArray[3] ? false
anArray[3] == anArray[4] ? true --> return!

现在以代码形式写这个。

我希望这有助于您了解如何使函数更通用。始终尝试抽象问题,以便您可以在多个问题上使用该解决方案。

答案 1 :(得分:-1)

对于一般解决方案,如果下一个数组元素具有相同的值,则必须检查每个数组元素(最后一个数组元素除外)。这最好在一个循环中完成,该循环从给定数组的长度获得循环计数。

也可能发生阵列没有那些相邻的数字。你必须以某种方式表明这一点。为此,返回值通常设置为有效查找范围之外的值。

public int firstPairOfDuplicates (int[] anArray)
{
   for(int i = 0;i<(anArray.Length-1) ; i++) // the -1 if for not going over the last index with the if statement below
   {
     if(anArray[i] == anArray[i+1])
     {
        return i;
     }
   }

   return -1; //not found
}