我是高中生,也是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
答案 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
}