注意首先这里的数的个数可能很大,所以不能够把这些数都加起来,这样做会越界而且效率不高,我这里使用的方法是位运算。通过抑或特有的性质.A^B=C 则同时有 B^C=A 无参数的交换 也同样是借助了这个性质。Java代码如下
package algorithm.bitwise;
public class SelectAbsentNum {
private int m = 15;
private int n = 5;
private int[] testList = { 7, 5, 8, 13, 6, 12, 10, 15, 14, 11 };
private int originalResult() {
if (n < m) {
int res = 0;
for (int i = n; i <= m; i++) {
res ^= i;
}
return res;
}
return 0;
}
private int testResult() {
if(testList != null){
int res = 0;
for (int i : testList) {
res ^= i;
}
return res;
}
return 0;
}
public int getAbsentNum() {
return originalResult() ^ testResult();
}
public static void main(String[] args) {
System.out.println(new SelectAbsentNum().getAbsentNum());;
}
}