我想搜索最小元素的频率是否为奇数,我会打印幸运,否则打印“不幸运”我使用了与计数排序arr [arr1 [i]] ++相关的技术,将重复的计数为值,并引用了实际值作为INDEX,我尝试使用此方法,但是并没有带来正确的答案[如果您更正我的代码,就很感激而不是新的解决方案]
输入:6 6 6 4 4 4 4 3 3 3 7 7
输出:倒霉
由于最小频率为7,7%2!= 0,所以很不幸
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int t=in.nextInt();
while(t-->0) { //Test cases
int n=in.nextInt();//array's length
int arr[]=new int[n];// array
for(int i=0;i<arr.length;i++) {
arr[i]=in.nextInt();
}
int counter[]=new int[256];//counting duplicates
for(int i=0;i<arr.length;i++) {
counter[arr[i]]++;
}
int min=1;
int pos=0;
for(int i=0;i<counter.length;i++) {
if(counter[i]<min && counter[i]!=0) { //search for minmal frequency (counter[i]!=0 since our counter arry could easly have lot zeroes
min=counter[i];
pos=i;
}
}
System.out.println((pos%2==0)?"Unlucky":"Lucky");
}
}
}
'''
不需要counter
的while循环和其他循环,您可以使用n
变量分配数组,然后将值输入arr
,并在同一循环中检查频率。并选择最小频率以检查它是lucky
还是not
请考虑以下几点: