我有一个排序的整数数组:
int[] arr = {13,18,22,29,44,59,77,81,87,99};
我想创建一个方法,我可以指定两个整数作为范围未包含在数组中,并检索该范围内的所有值。比如,20到80.这两个值不在数组中。到目前为止,我已经尝试了这个,只有在 arr 中存在两个值时才有效:
public ArrayList<int> find(num1, num2){
ArrayList<int> values = new ArrayList<int>();
int firstIndex = 0;
int secondIndex = 0;
for(int i=0; i<arr.length; i++){
if(num1 == arr[i]){
firstIndex = i;
}
if(num2 == arr[i]){
secondIndex = i;
}
}
while(firstIndex <= secondIndex){
values.add(arr[firstIndex]);
firstIndex++;
}
return values;
}
先谢谢你......我坚持了一段时间!
答案 0 :(得分:-1)
这是一个解决方案:
private static int[] valuesBetween(int min, int max) {
int start = 0;
while (start < arr.length && arr[start] < min) start++;
int end = start;
while (end < arr.length && arr[end] <= max) end++;
return Arrays.copyOfRange(arr, start, end);
}
您可以将其应用于空数组,如果max
小于min
,它也可以正常工作。
答案 1 :(得分:-2)
遍历您的阵列并检查该数字是否在给定范围内(例如,最小数字为9,最大数字为30)。将它添加到新创建的数组中,然后在完成后返回数组。我很快就会提供代码片段。
public ArrayList<Integer> withinRange(int min, int max, int[]array){
ArrayList<Integer> list = new ArrayList<>();
for(int i : array){
if(i>=min && i<=max){
list.add(i);
}
}
return list;
}
这将包括答案中的最小值和最大值。