我有一个没有固定数组大小的数组,考虑它可能有{9,10,11,15,16 ...}

时间:2017-05-01 18:59:09

标签: java arrays arraylist

我如何获得价值11和15,因为缺少值12,13,14.我得到了snippet from this SO post

我无法将它用于没有固定大小的数组。

       int binaryValue[] = null;
       ArrayList<Integer> al; 

        Vector father = new Vector();
        Vector child;
        int start = al.get(0);
          for(int i = 0; i < al.size(); i++) {
         if(al.get(i) != i + start) {
         child = new Vector();
         child.add(al.get(i-1));
         child.add(al.get(i));
         father.add(child);
    }
    }
Child should have 11 and 15 and so on ....

1 个答案:

答案 0 :(得分:0)

这是基于纯逻辑的问题,你只需要寻找下一个元素来找到差距,见下面的工作样本:

public class GapFinder {
    private static int[] myIntArr = {9, 10, 11, 12, 13, 15};

    public static void main(String[] args) {
        int a = 0,b = 0;
        for (int i = 0; i < myIntArr.length; i++) {
            if(((i + 1) < myIntArr.length) && myIntArr[i] != myIntArr[i + 1] - 1) {
                a = myIntArr[i];
                b = myIntArr[i + 1];
                break;
            }
        }
        if(a == 0 && b == 0){
            System.out.println("There were no gaps.");
        } else{
            System.out.println("Gaps: " + a + " | " + b);
        }
    }
}

请注意:

  • 这不是我可以解释的概念,这是纯粹的逻辑,我在开场陈述中已经说过,逻辑也是直截了当,不需要解释,它是安静的隐含而不是复杂的算法逻辑; OP只需循环下一个元素来识别间隙,直到检查下一个/上一个元素,无法通过获得预期值来识别间隙,这只是OP缺少的一小步,OP得到它
  • 这是一个有效的解决方案,可能会有像@ 9000在评论中提到的那些极端情况,基本的假设我无法提供处理所有极端情况的答案,我只是强调有助于解决的逻辑问题。