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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在给定范围内找到数组中的最小值?相关的知识,希望对你有一定的参考价值。

我们给出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

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

答案

找到最小值的优化方法,检查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'
    }
}

以上是关于如何在给定范围内找到数组中的最小值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在向量的给定索引范围内找到最小元素?

找到给定范围内数字的最大最小差

如何从给定数组的范围查询中获取给定值的最小异或值

如何在整数数组中查找所有有序元素对,其总和位于给定的值范围内

如何从特定小时范围内的行中选择最小值?

算法15-----找到所有数组中消失的数字