这就是我所做的。我还能做些什么?谁有人建议?我正在寻找bitset解决方案。
public static void main(String args[]) {
// one missing number
printMissingNumber(new int[]{1, 2, 3, 4, 6}, 6);
// two missing number
printMissingNumber(new int[]{1, 2, 3, 4, 6, 7, 9, 8, 10}, 10);
// three missing number
printMissingNumber(new int[]{1, 2, 3, 4, 6, 9, 8}, 10);
// four missing number
printMissingNumber(new int[]{1, 2, 3, 4, 9, 8}, 10);
// Only one missing number in array
int[] iArray = new int[]{1, 2, 3, 5};
int missing = getMissingNumber(iArray, 5);
System.out.printf("Missing number in array %s is %d %n",
Arrays.toString(iArray), missing);
}
答案 0 :(得分:3)
对于n个连续数,和s = n(n + 1)/ 2。
汇总数组中的数字并从s中减去它以找到缺失的数字。
答案 1 :(得分:0)
如果n
是最大的数字,并且只有一个丢失,那么缺少的数字是
n * (n + 1) / 2 - sum{elements in your array}
第一项是从{1}到n
的{{1}}个连续整数的总和。