A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 程振 中级黑马   /  2012-9-27 14:17  /  1240 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 屈俊材 于 2012-9-27 16:34 编辑

数组int array[n-1]中存放的是1~n之间的数,每个元素不会重复,其中少一个,找出少的那一个?
给出你的解题代码。。。

3 个回复

倒序浏览
数组int array[n-1]---------------理解你题目想要表达的意思,但是这种表述不科学。。。。

小数学题一枚,直接上伪码:
  1. int arrSum = array[0]+array[1]+...+array[n-2];
  2. int nSum = n*(n-1)/2;
  3. int lostNum = nSum - arrSum;
复制代码
lostNum即为少的那一个。
不考虑arrSum>Integer.Max或n<2的情况

评分

参与人数 1黑马币 +3 收起 理由
程振 + 3 赞一个!

查看全部评分

回复 使用道具 举报
本帖最后由 明光照 于 2012-9-27 15:13 编辑

import java.util.Arrays;

public class Test_6 {
        public static void main(String args[]) {
                int array[] = { 1, 3, 2, 5, 4, 6, 7, 9,10,8,13 };
                Arrays.sort(array);//将数组排序
                int i = 1;
                for (int j = 0; j < array.length; j++) {
                        if (i != array[j]) {
                                System.out.println("缺的那个数是:" + i);

                        }
                        i++;//使其自增长
                }
        }
}
回复 使用道具 举报
写了一下自己的思路 通过互相比较的方式 这样是可以的
int arr[n-1];
for(int i=1;i<=n:i++){
   int flag=0;
    for(int ii=0;ii<n-1;ii++){
     if(arr[ii]==i){
           flag=1;
              }
}
if(flag==0){
System.out.println("queshaodeshi"+i);}
    }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马