我有一个名为m1(int input1,int input2,int[] input3)
的方法,该方法具有三个参数。无论在input1
中定义什么值,input3[]
中应包含的元素个数均相同,即input3
的长度与input1
的值相同。无论在input2
中定义什么值,迭代都将在int input3
中进行直到达到该长度。而且它必须给计数提供它迭代了多少个元素,但是如果重复相同的数目,则计数值将不会增加。对于第一次,计数将增加,但是一旦没有重复,计数将保持不变,并且当计数将得到不同的元素时,计数将增加,但是将进行迭代直到在input2
中提到的长度。
例:
int input1 =5;
int input2= 3;
int[] input3 ={1,2,1,3,4};
预期:
所以这里的input1是5,所以input3的长度也是5。
这里的input2值为3,因此在迭代input3时必须迭代直到第2个索引,即直到length为3。因此,这里的迭代将一直进行到{1,2,1},并且计数必须为2,因为重复1 2次。
最佳答案
我们不需要第一个参数,我们可以使用input3.length来获取该属性。对于该问题,我提供了两种解决方案,
一种是使用Set,另一种是使用流。 Set是一个数据结构,它使项目保持唯一的含义,即使您添加两次项目,它也只会保留其中一项,因此您可以从中获得不同的元素计数。
第二个是使用Java流API,您可以仅使用Limit和不同的操作来获得唯一计数。
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
class Solution {
public static int findUniqueCountUsingSet(int length, int range, int[] input) {
Set<Integer> integers = new HashSet<>();
for (int i = 0; i < range; i++) {
integers.add(input[i]);
}
return integers.size();
}
public static int findUniqueCountUsingStream(int length, int range, int[] input) {
return (int) Arrays.stream(input).limit(range).distinct().count();
}
public static void main(String[] args) {
System.out.println(findUniqueCountUsingSet(5, 3, new int[]{1, 2, 1, 3, 4}));
System.out.println(findUniqueCountUsingStream(5, 3, new int[]{1, 2, 1, 3, 4}));
}
}