Wis*_*was 4 java arrays for-loop
我正在编写一个代码,我有一个int [a],该方法应该返回唯一值的数量.示例:{1} = 0个不同的值,{3,3,3} = 0个不同的值,{1,2} = 2个不同的值,{1,2,3,4} = 4个不同的值等.我不是允许对数组进行排序.
问题是我的方法可能不起作用.我的陈述有问题,我无法弄清楚.
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;
}
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮忙吗?
这实际上比大多数人已经做到的要简单得多,这种方法非常好用:
public static int diffValues(int[] numArray){
int numOfDifferentVals = 0;
ArrayList<Integer> diffNum = new ArrayList<>();
for(int i=0; i<numArray.length; i++){
if(!diffNum.contains(numArray[i])){
diffNum.add(numArray[i]);
}
}
if(diffNum.size()==1){
numOfDifferentVals = 0;
}
else{
numOfDifferentVals = diffNum.size();
}
return numOfDifferentVals;
}
Run Code Online (Sandbox Code Playgroud)
让我带你走过去:
1)提供一个int数组作为参数.
2)创建一个包含整数的ArrayList:
注意:这意味着ArrayList包含int []中的所有数字,并删除重复的数字.
3)ArrayList的大小(类似于数组的长度属性)将是所提供的数组中不同值的数量.
输入:
int[] numbers = {3,1,2,2,2,5,2,1,9,7};
Run Code Online (Sandbox Code Playgroud)
产量:6