有1-100的100个自然数,把他们放入a[99]中,用JAVA编写一段代码,找出哪个数没被放进去?

解决方案 »

  1.   

    计算出a[99]中所有数字的和A,然后 5050 - A就是那个没放进去的数字
      

  2.   

    我把上面的哥们的实现下。
    public int findIt(int a[99]){
    int sum = 0;   
    for(int i=0;i<99;i++){
    sum += i;
    } return 5050 - sum;
    }
    也许还有其他算法:)
      

  3.   

    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;
    }
      

  4.   

    :(
    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;
    }
      

  5.   

    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;
    }
      

  6.   

    if (i<100) {  改成 if (i<a.length) {楼主记得给分啊
      

  7.   

    放完后,遍历一下数组,值为null的显示出来不就行了
      

  8.   

    楼上如果有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;
        }
      

  9.   

    在排好序的情况下,不知如下是否可行,望各位大哥多给意见
    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;
    }