我想说:
int[] arr = new int[]{509,508,507,506,505,504,503};
the output should be: 3
*我需要从0到n从507到504计数,其中n是504所在的末尾。
*我对此感到困惑,我有一些代码,但它不是我想要的。
这是我的代码:
int[] arr = new int[]{509,508,507,506,505,504,503};
int d = 504;
int s = 507;
int x,y = 0;
for(x = arr[s]; x < arr[d]; x++){
y += 1;
}
任何人都可以帮我这个吗?非常感谢!
答案 0 :(得分:1)
假设您知道507将出现在504之前,您可以使用布尔变量:
boolean count=false;
int y=0;
for (int x : arr) {
if (x == 507)
count = true;
else if (x == 504)
count = false;
if (count)
y++;
}
System.out.println(y);
答案 1 :(得分:0)
您可以创建一个函数,该函数返回数组中两个值之间的索引距离 如果其中任何一个不存在,则为-1。
public static int getDistance(int[] arr, int d, int s) {
int indexD = -1; int indexS = -1;
for (int i=0; i< arr.length; i++) {
if (arr[i] == d) indexD = i;
else if (arr[i] == s) indexS = i;
if (indexD != -1 && indexS != -1)
break;
}
if (indexD == -1 || indexS == -1) return -1;
return Math.abs(indexD - indexS);
}
*此解决方案与排序或未排序的数组无关
*假设您的数组具有唯一值,但它仅适用于计算每个值的首次出现之间的距离。