如何在给定范围内找到数组中的最小值?

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

我们给出2个数组,一个数组称为原始数组,另一个数组是相应的数组。

示例:

a:[5,6,5,7,5,5,5,8,9]

a':[1,2,3,1,2,3,1,2,1]

我们给出了3个值:lrx

l = 3r = 7,也x = 5

所以我们检查5范围内[3,7]的出现,所以a[3]a[5]a[6]a[7]是包含5的指数。

现在,我们检查相应的数组值a'[3]a'[5]a'[6]a'[7],它们是:3231。其中最小的是1,因此输出将是:1

我知道像这样的多个查询的蛮力方法,但我对一种有效的方法感兴趣!

arrays
1个回答
0
投票

找到最小值的优化方法,检查xl范围内的r的值,它存在的值然后将它与x数组中找到的aDash的先前最小值进行比较。

public static void minimumValue(int[] a, int aDash[], int l, int r, int x) {
    int min = Integer.MAX_VALUE;
    boolean isValueFound = false;
    for(int i = l-1; i<a.length && i<r; i++) {
        if(a[i] == x && aDash[i] < min) {
            min = aDash[i];
            isValueFound = true;
        }
    }
    if(isValueFound)
        System.out.println(min);
    else {
        //do something when no value of x is present in the array 'a'
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.