如何打印所有最大数字的索引而不丢失索引计数?

cbeh67ev  于 2022-09-16  发布在  Java
关注(0)|答案(1)|浏览(131)

假设我创建了一个数组

int[] maxNums = {62, 24, 54, 92, 12, 45, 75, 43, 46, 98, 23, 98};

我知道如何打印最大值及其索引。这里有两个重复的数字98,如何打印重复最大值的索引。98都在索引9和11处。

int[] maxNums = {62, 24, 54, 92, 12, 45, 75, 43, 46, 98, 23, 98};
        int maxmark = 0, index = 0;
        for(int i = 0; i < marks.length; i++){
            if(marks[i] > maxmark){
                maxmark = marks[i];
                index = i;
            }
        }
        System.out.println("Maximum mark = " + maxmark + " Index = " + index);
gc0ot86w

gc0ot86w1#

有多种方法可以做到这一点,如果您确切地知道总是有2个示例,您可以只引入第二个索引(index2)。但一般来说,我们希望能够对最大值的任意出现次数执行此操作。

int[] maxNums = {62, 24, 54, 92, 12, 45, 75, 43, 46, 98, 23, 98};
int[] idx = new int[10]; // last 10 
int maxmark = 0, index = 0;
for(int i = 0; i < marks.length; i++){
    if(marks[i] > maxmark){
        maxmark = marks[i];
        index = 0;
        idx[index] = i;
    }else if (marks[i] == maxmark){
        index = index + 1;
        idx[index] = i;
    }
}

for(int i = 0; i < index; i++){
    System.out.println("Maximum mark = " + maxmark + " Index = " + idx[i]);
}

更好的方法是列表,它不是静态分配的。如果在给定时间有超过10个最大索引,则会中断。注意,这里的索引只是idx数组的位置。

相关问题