【问题标题】:How to get the index of the value with the smallest difference?如何获得差异最小的值的索引?
【发布时间】:2020-03-11 21:07:18
【问题描述】:
int[] b = new int[4];
int min = 10000;
int index = 0;
b[0] = arr[0][0]; //b[0]=> 
b[1] = arr[1][0]; //b[1]=> 
b[2] = arr[2][0]; //b[2]=> 
b[3] = arr[3][0]; //b[3]=> 

for (int i = 0; i < b.length; i++) {
  if(b[i]>r)
    b[i]=b[i]-r;
  else
    b[i]=r-b[i];
  if (b[i] < min) {
    min = b[i] ;
    index = i;
  }}
return index;

我想找到最接近我的数字 r 的索引。 例如,增量最小的地方 谁能帮帮我?

这里举个例子:b[0]=1, b[1]=2,b[2]=3,b[3]=4 r=5 ---> 最小差是 1 (5 -b[3]) 所以我想要的索引是 3。

【问题讨论】:

  • 最接近我的号码的索引 你的号码是多少? delta最小的地方什么是delta?
  • 这里举个例子:b[0]=1, b[1]=2,b[2]=3,b[3]=4 r=5 ---> 最小差是1 (5-b[3]) 所以我想要的索引是 3。

标签: java arrays minimum


【解决方案1】:

两个问题:你没有设置新的最小值,也没有设置新的索引。

for (int i = 0; i < b.length; i++) {
  if (b[i]-r < min)
    min = b[i];
  index = i;
}

你需要在新的 min 中包含 -r,并且你需要将 index = I; 放在同一个块中,否则索引将永远是 b.length - 1

for (int i = 0; i < b.length; i++) {
  var dist = Math.abs(b[i]-r);
  if (dist < min) {
    min = dist;
    index = i;
  }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-04
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-12
    • 2018-10-20
    相关资源
    最近更新 更多