我们给出2个数组,一个数组称为原始数组,另一个数组是相应的数组。
示例:
a:
[5,6,5,7,5,5,5,8,9]
a':
[1,2,3,1,2,3,1,2,1]
我们给出了3个值:l
,r
和x
让l = 3
和r = 7
,也x = 5
,
所以我们检查5
范围内[3,7]
的出现,所以a[3]
,a[5]
,a[6]
,a[7]
是包含5
的指数。
现在,我们检查相应的数组值a'[3]
,a'[5]
,a'[6]
,a'[7]
,它们是:3
,2
,3
和1
。其中最小的是1
,因此输出将是:1
。
我知道像这样的多个查询的蛮力方法,但我对一种有效的方法感兴趣!
找到最小值的优化方法,检查x
和l
范围内的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'
}
}