我把上面的哥们的实现下。 public int findIt(int a[99]){ int sum = 0; for(int i=0;i<99;i++){ sum += i; } return 5050 - sum; } 也许还有其他算法:)
LS:)public int findIt(int a[]){ int result = 0; for(int i=0;i<a.length;i++){ result += (i-a[i]); }return result + a.length + 1; }
:( should be: public int findIt(int a[]){ int result = 0; for(int i=0;i<a.length;i++){ result += (i+1-a[i]); }return result + a.length + 1; }
public int findIt(int[] a){ int sum = 0; int sumA = 0; for(int i=0;i<101;i++){ sum += i+1; if (i<100) { sumA += a[i]; } } return sum - sumA; }
if (i<100) { 改成 if (i<a.length) {楼主记得给分啊
放完后,遍历一下数组,值为null的显示出来不就行了
楼上如果有10w个数的时候你自己看着办吧。如果只是1个数字的话二楼的方法是可以,不过对于如果不是100其他的话可以改称sum=n*(n+1)/2。然后sum-A 如果是n个数字不在,可以考虑先把a[]按由大到小排序,设置一个m=1和f[n]然后遍历a查找。 public static int[] findInts(int[] a, int n) { int len = a.length; if (n - len <= 0) return null; int[] f = new int[n - len]; a = sort(a); int temp = 1; for (int i = 0; i < len; i++) { if(a[i] != i+temp){ f[temp-1] = i + 1; temp++; } } return f; }
在排好序的情况下,不知如下是否可行,望各位大哥多给意见 public int findInt(int a[]) { int c=-1; for(int i=1;i<a.length+1;i++) { if(i!=a[i]) { c=i; i=(a.length+1) } } if(c=-1) { c=(a.length+1); } return c; }
public int findIt(int a[99]){
int sum = 0;
for(int i=0;i<99;i++){
sum += i;
} return 5050 - sum;
}
也许还有其他算法:)
int result = 0;
for(int i=0;i<a.length;i++){
result += (i-a[i]);
}return result + a.length + 1;
}
should be:
public int findIt(int a[]){
int result = 0;
for(int i=0;i<a.length;i++){
result += (i+1-a[i]);
}return result + a.length + 1;
}
int sum = 0;
int sumA = 0;
for(int i=0;i<101;i++){
sum += i+1;
if (i<100) {
sumA += a[i];
}
}
return sum - sumA;
}
如果是n个数字不在,可以考虑先把a[]按由大到小排序,设置一个m=1和f[n]然后遍历a查找。
public static int[] findInts(int[] a, int n) {
int len = a.length;
if (n - len <= 0) return null;
int[] f = new int[n - len];
a = sort(a); int temp = 1;
for (int i = 0; i < len; i++) {
if(a[i] != i+temp){
f[temp-1] = i + 1;
temp++;
}
}
return f;
}
public int findInt(int a[]) {
int c=-1;
for(int i=1;i<a.length+1;i++) {
if(i!=a[i]) {
c=i;
i=(a.length+1)
}
}
if(c=-1) {
c=(a.length+1);
}
return c;
}