我正在编写一段代码,其中有一个int[a],该方法应返回唯一值的数量。例如:{1} = 0个不同的值,{3,3,3} = 0个不同的值,{1,2} = 2个不同的值,{1,2,3,4} = 4个不同的值等。 我不允许对数组进行排序。
问题是我的方法可能存在问题。我的for语句有问题,但我无法找出原因。
问题是我的方法可能存在问题。我的for语句有问题,但我无法找出原因。
public class Program
{
public static void main(String[] args)
{
int[] a = {1, 2, 3, 1};
System.out.println(differentValuesUnsorted(a));
//run: 4 //should be 3
}
public static int differentValuesUnsorted(int[] a)
{
int values; //values of different numbers
if (a.length < 2)
{
return values = 0;
}else if (a[0] == a[1])
{
return values = 0;
}else
{
values = 2;
}
int numberValue = a[0];
for (int i = a[1]; i < a.length; i++)
{
if (a[i] != numberValue)
{
numberValue++;
values++;
}
}
return values;
}
}
有人能帮忙吗?
differentValuesUnsorted
函数顶部的那些if
else-if
else
语句,它们只适用于长度小于2的数组,还是应该遍历存储了多个整数的数组? - Ungeheuera[1]
的值大于数组的长度会发生什么?将会出现AIOOB错误。 - Ungeheuerelse if(a[0] == a[1])
这行时前两个整数相同,它将返回0而不是2。你的循环依然存在问题。 - Ungeheuer