首页 文章

我想在数组中找到最后一个值,如果没有找到这样的数字,也返回“-1”

提问于
浏览
0

我知道stackoverflow上有类似的问题,但是当没有找到数字时,他们的答案都没有包含返回“-1” .

给定一个数组列表,例如a = [4,3,9,4,6]

输入诸如v = 4之类的值时,我希望Java为我提供与数组中该值相等的最后一个索引 . 所以在这种情况下,Java应该返回索引值3 .

如果数组中没有值,例如v = 2,那么我希望它返回“-1” .

我想出的以下解决方案找到第一个索引并返回它:

public static int lastIndexOf(int[] a, int v) {
    int index = 0;
    for(int i=0; i<a.length;i++) {
        if(a[i]==v) {
            index=i;
            return index;
        }
    }
    return -1;
}

我有另一个解决方案,找到数组中的最后一个索引,但是当我输入数组中不存在的值时,不会返回“-1” .

public static int lastIndexOf(int[] a, int v) {
    int index = 0;
    for(int i=0; i<a.length;i++) {
        if(a[i]==v) {
            index=i;
        }
    }
    return index;
}

我觉得我已接近解决这个问题,但我无法弄清楚如何将这两种解决方案混合在一起 .

2 回答

  • 3

    在第二个解决方案中,只需像这样初始化变量:

    int index = -1;
    

    还要考虑从右到左遍历数组,这样我们就可以在找到元素后立即停止,它会更高效:

    public static int lastIndexOf(int[] a, int v) {
        for (int i = a.length-1; i >= 0; i--)
            if (a[i] == v)
                return i;
        return -1;
    }
    
  • 1

    Assing int index = -1 . 对于更大的循环,从端到端的小优化循环可能要快得多:

    public static int lastIndexOf(int[] a, int v) {
      int index = -1;
      for(int i=a.length-1; i >= 0; i--) {
        if(a[i]==v) {
            index=i;
            return index;
        }
      }
      return index;
    }
    

相关问题