【问题标题】:Getting all the values from an array in between a range从范围之间的数组中获取所有值
【发布时间】:2017-10-14 03:42:45
【问题描述】:

我有一个排序的整数数组:

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;
}

在此先感谢..我坚持了一段时间!

【问题讨论】:

  • for(loopOverArray) {if(InRange)add} 作为伪,几乎所有你需要做的。我们也不是在这里为您完成任务,向我们展示您的尝试,您遇到的困难,我们会提供帮助。否则我会说你的问题将被关闭。
  • “我在这个问题上卡了一会儿” 显示你的尝试,否则这听起来像是一个代码编写请求。展示你做了什么,解释哪些部分不起作用,你正在使用什么输入等等。人们会很乐意帮助你解释为什么你的代码没有达到你的预期。
  • 我很抱歉。我再次编辑了这个问题。感谢您指出。

标签: java arrays


【解决方案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,它也可以工作。

【讨论】:

    【解决方案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;
    }
    

    这将包括答案中的最小值和最大值。

    【讨论】:

    • 我不能投票给你,因为我没有 15 声望。抱歉...@MZ4Code
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-29
    • 2017-12-08
    相关资源
    最近更新 更多