我需要我的代码向后看一个数组,比如:[20, 15, 9, 2, 11, 9, 11, 10, 3]
。
它需要找到满足在元素 + - 2 创建的区间内的元素。
前任。3 创建区间 [1-5] 因为下一个元素比区间高 10。我们移动到创建区间 [8-12] 的元素 10,我们看到 11、9、11、9 和 10 本身在该区间内,将它们添加到新数组中。(高于区间的元素应该会使代码中断,较小的元素是可以的)。
输入前:[20, 15, 9, 2, 11, 9, 11, 10, 3]
输出前:[9, 2, 11, 9, 11, 10, 3] or [9, 11, 9, 11, 10]
输入前:[20, 15, 9, 2, 11, 20, 11, 10, 3]
输出前:[11, 10, 3]
或[11, 10]
我已经尝试了很多方法,因为我很新,所以我对能够在数组中做什么不是很有经验。我在网上看了一点运气。
到目前为止,我想出的是:
List<Integer> thetops = new ArrayList<Integer>();
double lowerFactor = 0.8;
double upperFactor = 1.2;
for(int k = tops.size()-1; k > 0; k--){
double lowerLimit = tops.get(k) * lowerFactor;
double upperLimit = tops.get(k) * upperFactor;
if (tops.get(k-1) > upperLimit){
k=k-1;
}
if (tops.get(k) >= lowerLimit && tops.get(k) <= upperLimit){
thetops.add(tops.get(k));
}
}
我试图做的是选择最后一个元素,如果下一个元素高于移动到该元素的间隔,则从该值创建一个间隔。但如果下一个元素在该区间内,则将其添加到新数组中。