我正在开发一个比较数组的程序,我必须检查是否有任何连续的匹配。
例如,如果我有2个数组:
{3,4,2,5,6}
第一个数组
{4,8,9,2,5}
第二个数组
在这个例子中,我有3个连续的比赛,即4,2,5。
在第一个数组中,我们按顺序排列了4,2,5,它们位于第二个数组中。
示例2:
{3,4,6,5,2}第一个数组
{4,8,9,2,5}第二个数组
在这个中我只有2个连续的数字,分别为5和2。
5和2在第一个数组中按顺序排列,它们在第二个数组中。
public static boolean checkConsecutive(int[] firstArray, int[] secondArray)
{
boolean consecutive = false;
for(int i = 0; i < firstArray.length ; i++)
{
for (int j = 0; j < secondArray.length; j++)
{
if (firstArray[i] == secondArray[j])
consecutive = true;
else
consecutive = false;
}
}
return consecutive;
我怎么知道我有多少连续数字?
答案 0 :(得分:0)
首先,你的算法是比较每个数组的最后一个元素,如果它们不相等则返回false,如果它们匹配则返回true。在循环中使用else条件会使您的算法错误,因为您将要连续覆盖,有时会将其更改为false,尽管它已经是真的。我只是假设你不想那样。
其次以算法的方式思考它:
For(i) each of the first array's elements,
for(j) each element of the second array after the last match, until you find a match
if you find a match, increase a counter, stop the second loop
您必须控制循环第二个循环的方式,以便在第二个数组中仅计算每个元素一次。
我不知道自己是否已经清楚,但很难在没有为你解决问题的情况下提供线索。