计数排序算法问题

问题描述 投票:0回答:2

我想搜索最小元素的频率是否为奇数,我会打印幸运,否则打印“不幸运”我使用了与计数排序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");
    }
}   

}

'''

java algorithm sorting
2个回答
-1
投票

不需要counter的while循环和其他循环,您可以使用n变量分配数组,然后将值输入arr,并在同一循环中检查频率。并选择最小频率以检查它是lucky还是not


-1
投票

请考虑以下几点:

© www.soinside.com 2019 - 2024. All rights reserved.